Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / View / ExtensionWindowResizeGrip.cs / 1305376 / ExtensionWindowResizeGrip.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.View { using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Runtime; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; //This class is visual representation of ResizeGrip like control, which is used with ExtenstionWindows to allow //resizing. Actual resize logic is handled by ExtensionSurface class [TemplatePart(Name = "PART_ResizeGrip")] class ExtensionWindowResizeGrip : Control { public static readonly DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(DrawingBrush), typeof(ExtensionWindowResizeGrip)); ExtensionWindow parent; ExtensionSurface surface; Point offset; [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline, Justification = "Overriding metadata for dependency properties in static constructor is the way suggested by WPF")] static ExtensionWindowResizeGrip() { DefaultStyleKeyProperty.OverrideMetadata( typeof(ExtensionWindowResizeGrip), new FrameworkPropertyMetadata(typeof(ExtensionWindowResizeGrip))); } public DrawingBrush Icon { get { return (DrawingBrush)GetValue(IconProperty); } set { SetValue(IconProperty, value); } } protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); if (this.parent.IsResizable) { this.Cursor = Cursors.SizeNWSE; this.offset = e.GetPosition(this); CaptureMouse(); } } protected override void OnMouseMove(MouseEventArgs args) { base.OnMouseMove(args); if (args.LeftButton == MouseButtonState.Pressed && this.IsMouseCaptured) { Point currentPosition = Mouse.GetPosition(this.parent); currentPosition.Offset(this.offset.X, this.offset.Y); Size newSize = new Size(); newSize.Width = Math.Min(Math.Max(this.parent.MinWidth, currentPosition.X), this.parent.MaxWidth); newSize.Height = Math.Min(Math.Max(this.parent.MinHeight, currentPosition.Y), this.parent.MaxHeight); System.Diagnostics.Debug.WriteLine("NewSize = (" + newSize.Width + "," + newSize.Height + ")"); this.surface.SetSize(this.parent, newSize); } } protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { base.OnMouseLeftButtonUp(e); Mouse.OverrideCursor = null; Mouse.Capture(null); } protected override void OnVisualParentChanged(DependencyObject oldParent) { base.OnVisualParentChanged(oldParent); if (!DesignerProperties.GetIsInDesignMode(this) && !ExtensionWindow.TryGetParentExtensionWindow(this, out this.parent, out this.surface)) { Fx.Assert("ExtensionWindowHeader cannot be used outside ExtensionWindow"); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.View { using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Runtime; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; //This class is visual representation of ResizeGrip like control, which is used with ExtenstionWindows to allow //resizing. Actual resize logic is handled by ExtensionSurface class [TemplatePart(Name = "PART_ResizeGrip")] class ExtensionWindowResizeGrip : Control { public static readonly DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(DrawingBrush), typeof(ExtensionWindowResizeGrip)); ExtensionWindow parent; ExtensionSurface surface; Point offset; [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.InitializeReferenceTypeStaticFieldsInline, Justification = "Overriding metadata for dependency properties in static constructor is the way suggested by WPF")] static ExtensionWindowResizeGrip() { DefaultStyleKeyProperty.OverrideMetadata( typeof(ExtensionWindowResizeGrip), new FrameworkPropertyMetadata(typeof(ExtensionWindowResizeGrip))); } public DrawingBrush Icon { get { return (DrawingBrush)GetValue(IconProperty); } set { SetValue(IconProperty, value); } } protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); if (this.parent.IsResizable) { this.Cursor = Cursors.SizeNWSE; this.offset = e.GetPosition(this); CaptureMouse(); } } protected override void OnMouseMove(MouseEventArgs args) { base.OnMouseMove(args); if (args.LeftButton == MouseButtonState.Pressed && this.IsMouseCaptured) { Point currentPosition = Mouse.GetPosition(this.parent); currentPosition.Offset(this.offset.X, this.offset.Y); Size newSize = new Size(); newSize.Width = Math.Min(Math.Max(this.parent.MinWidth, currentPosition.X), this.parent.MaxWidth); newSize.Height = Math.Min(Math.Max(this.parent.MinHeight, currentPosition.Y), this.parent.MaxHeight); System.Diagnostics.Debug.WriteLine("NewSize = (" + newSize.Width + "," + newSize.Height + ")"); this.surface.SetSize(this.parent, newSize); } } protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { base.OnMouseLeftButtonUp(e); Mouse.OverrideCursor = null; Mouse.Capture(null); } protected override void OnVisualParentChanged(DependencyObject oldParent) { base.OnVisualParentChanged(oldParent); if (!DesignerProperties.GetIsInDesignMode(this) && !ExtensionWindow.TryGetParentExtensionWindow(this, out this.parent, out this.surface)) { Fx.Assert("ExtensionWindowHeader cannot be used outside ExtensionWindow"); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ComponentRenameEvent.cs
- OSEnvironmentHelper.cs
- Paragraph.cs
- CodeDelegateInvokeExpression.cs
- EventLog.cs
- PerspectiveCamera.cs
- RepeaterItemEventArgs.cs
- cookiecontainer.cs
- SystemInfo.cs
- CurrencyWrapper.cs
- Parsers.cs
- LockCookie.cs
- PeoplePickerWrapper.cs
- DesignerActionItem.cs
- UIInitializationException.cs
- HttpGetProtocolReflector.cs
- DashStyle.cs
- CategoryAttribute.cs
- HostingEnvironmentException.cs
- ListView.cs
- TableItemPattern.cs
- Selector.cs
- HideDisabledControlAdapter.cs
- CodeTypeParameter.cs
- NestedContainer.cs
- ExtensionSurface.cs
- RoutedEventValueSerializer.cs
- BitmapEffectrendercontext.cs
- LocationSectionRecord.cs
- HttpModule.cs
- SpellCheck.cs
- TextBounds.cs
- XslTransformFileEditor.cs
- SharedPerformanceCounter.cs
- KnownTypesProvider.cs
- AmbientValueAttribute.cs
- ConnectionPointCookie.cs
- DataGridViewTopRowAccessibleObject.cs
- Transactions.cs
- ThemeDirectoryCompiler.cs
- TagPrefixAttribute.cs
- ToolTipAutomationPeer.cs
- LineUtil.cs
- SamlAction.cs
- RenamedEventArgs.cs
- SafeFileHandle.cs
- AssociationSet.cs
- NumberFormatInfo.cs
- IERequestCache.cs
- HtmlGenericControl.cs
- FunctionGenerator.cs
- RequestTimeoutManager.cs
- FileLevelControlBuilderAttribute.cs
- PropertyPushdownHelper.cs
- XmlDataDocument.cs
- Sql8ConformanceChecker.cs
- ComplexTypeEmitter.cs
- DirtyTextRange.cs
- TreeNodeStyle.cs
- EventLogPropertySelector.cs
- ParseElement.cs
- DecoderReplacementFallback.cs
- InvokeProviderWrapper.cs
- arabicshape.cs
- AsymmetricKeyExchangeDeformatter.cs
- TreeView.cs
- IpcServerChannel.cs
- ServiceOperationUIEditor.cs
- SecurityHeaderTokenResolver.cs
- PresentationTraceSources.cs
- PersianCalendar.cs
- RankException.cs
- CreateDataSourceDialog.cs
- DbProviderFactory.cs
- configsystem.cs
- FormView.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- RequestQueue.cs
- QilVisitor.cs
- ZipIOExtraFieldPaddingElement.cs
- DoWorkEventArgs.cs
- PageAsyncTaskManager.cs
- EdmToObjectNamespaceMap.cs
- FileLevelControlBuilderAttribute.cs
- ProcessHostConfigUtils.cs
- XmlEnumAttribute.cs
- ThumbAutomationPeer.cs
- WithStatement.cs
- SynchronizationContextHelper.cs
- PcmConverter.cs
- _NtlmClient.cs
- DataGridCommandEventArgs.cs
- TagMapInfo.cs
- DoubleAverageAggregationOperator.cs
- WorkflowRuntimeServiceElement.cs
- SecurityKeyIdentifierClause.cs
- ManagedWndProcTracker.cs
- BindingExpressionBase.cs
- TrustManager.cs
- HuffmanTree.cs