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
- TimeManager.cs
- FormsAuthentication.cs
- SafeReversePInvokeHandle.cs
- SqlWriter.cs
- InputBinding.cs
- LinearGradientBrush.cs
- MouseGestureValueSerializer.cs
- DataStreamFromComStream.cs
- ClientScriptManagerWrapper.cs
- X509Chain.cs
- LayoutEvent.cs
- BoolExpr.cs
- GAC.cs
- SerializationSectionGroup.cs
- HtmlUtf8RawTextWriter.cs
- DataGridViewCheckBoxCell.cs
- JsonEnumDataContract.cs
- WSDualHttpBindingElement.cs
- DataPagerFieldCollection.cs
- DataGridViewCellStyleChangedEventArgs.cs
- WindowsGraphics2.cs
- CookielessHelper.cs
- CngUIPolicy.cs
- FlagPanel.cs
- HeaderedContentControl.cs
- XmlReaderSettings.cs
- AssociationType.cs
- FontStretchConverter.cs
- XmlSerializerObjectSerializer.cs
- KnownColorTable.cs
- MutexSecurity.cs
- ImportCatalogPart.cs
- StringStorage.cs
- MarshalDirectiveException.cs
- UrlUtility.cs
- SafeCancelMibChangeNotify.cs
- MenuBindingsEditorForm.cs
- XmlSignatureProperties.cs
- TextSchema.cs
- TreeNodeCollection.cs
- StyleSheet.cs
- RegexGroup.cs
- Debug.cs
- DetailsViewInsertEventArgs.cs
- MediaPlayer.cs
- RectAnimation.cs
- Screen.cs
- connectionpool.cs
- LogLogRecordHeader.cs
- TimeStampChecker.cs
- CodePageUtils.cs
- PeerNameResolver.cs
- connectionpool.cs
- XslNumber.cs
- XPathMultyIterator.cs
- UndoManager.cs
- DropShadowEffect.cs
- HttpException.cs
- ExpressionNode.cs
- UrlAuthFailedErrorFormatter.cs
- TimeSpanValidator.cs
- Camera.cs
- UnsafeNativeMethods.cs
- Table.cs
- ToolboxComponentsCreatingEventArgs.cs
- Delegate.cs
- FormatStringEditor.cs
- HttpCachePolicy.cs
- CollectionType.cs
- CompositionAdorner.cs
- SubqueryRules.cs
- DependencyObjectType.cs
- MediaCommands.cs
- COM2IDispatchConverter.cs
- Baml2006Reader.cs
- Button.cs
- WebPartDisplayModeEventArgs.cs
- DetailsViewDeleteEventArgs.cs
- FragmentNavigationEventArgs.cs
- NetStream.cs
- TreeNodeClickEventArgs.cs
- SubpageParagraph.cs
- ListBindingConverter.cs
- DiscoveryVersionConverter.cs
- StorageRoot.cs
- ISAPIApplicationHost.cs
- SectionInformation.cs
- CodeMemberField.cs
- MetadataUtilsSmi.cs
- ItemsChangedEventArgs.cs
- ConfigurationValidatorBase.cs
- DataGridViewColumnConverter.cs
- DesignerVerb.cs
- ForceCopyBuildProvider.cs
- SectionUpdates.cs
- TableRow.cs
- PropertyKey.cs
- UdpReplyToBehavior.cs
- CompositeFontFamily.cs
- TrustManagerPromptUI.cs