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
- BrushConverter.cs
- UTF32Encoding.cs
- SecurityPolicySection.cs
- SoapIgnoreAttribute.cs
- RuntimeWrappedException.cs
- RemoteHelper.cs
- PropertyMetadata.cs
- RemoteArgument.cs
- PublishLicense.cs
- CodeExporter.cs
- SqlCacheDependencyDatabase.cs
- StyleBamlRecordReader.cs
- DispatcherSynchronizationContext.cs
- EditorOptionAttribute.cs
- HttpRequest.cs
- AsymmetricSignatureFormatter.cs
- Html32TextWriter.cs
- EventDescriptor.cs
- PrintControllerWithStatusDialog.cs
- AmbientValueAttribute.cs
- UnmanagedMemoryStreamWrapper.cs
- GroupBox.cs
- ForceCopyBuildProvider.cs
- DeclarativeCatalogPart.cs
- XmlTextAttribute.cs
- InternalRelationshipCollection.cs
- CurrentTimeZone.cs
- SqlDataSource.cs
- ReadOnlyObservableCollection.cs
- BaseParaClient.cs
- Sequence.cs
- CodeIdentifier.cs
- DesignerExtenders.cs
- KeyEvent.cs
- ContactManager.cs
- Rotation3DKeyFrameCollection.cs
- Point4DConverter.cs
- EventMap.cs
- BCryptSafeHandles.cs
- CommandManager.cs
- _NTAuthentication.cs
- Mapping.cs
- BitmapEffectOutputConnector.cs
- UpdatePanelTrigger.cs
- QueuePathDialog.cs
- DataGridViewHeaderCell.cs
- AccessDataSource.cs
- XPathNodeInfoAtom.cs
- OperationResponse.cs
- ServicesUtilities.cs
- RestHandler.cs
- WSTrustFeb2005.cs
- TaskExceptionHolder.cs
- ValidationSummary.cs
- ReaderContextStackData.cs
- MobileUserControlDesigner.cs
- EventBindingService.cs
- MembershipUser.cs
- FactoryGenerator.cs
- OleDbFactory.cs
- DataSourceHelper.cs
- Decorator.cs
- BlurBitmapEffect.cs
- OleDbRowUpdatingEvent.cs
- TextTreeTextNode.cs
- JsonWriterDelegator.cs
- ElementInit.cs
- TreeNodeSelectionProcessor.cs
- CodeRemoveEventStatement.cs
- DataTableMapping.cs
- LockCookie.cs
- XmlCountingReader.cs
- WebBrowserNavigatedEventHandler.cs
- SafeNativeMethods.cs
- DummyDataSource.cs
- ProxyManager.cs
- MarkupCompilePass1.cs
- KeyValuePair.cs
- CodeGenerator.cs
- Bold.cs
- LocalizationComments.cs
- metadatamappinghashervisitor.cs
- RegisteredArrayDeclaration.cs
- SamlDoNotCacheCondition.cs
- TCPListener.cs
- Point3DCollection.cs
- MouseCaptureWithinProperty.cs
- ToolStripGripRenderEventArgs.cs
- ChineseLunisolarCalendar.cs
- SafeCertificateContext.cs
- SettingsContext.cs
- ActivityStatusChangeEventArgs.cs
- LineServicesCallbacks.cs
- ApplicationContext.cs
- mediaeventargs.cs
- SoapTypeAttribute.cs
- RelationshipFixer.cs
- IApplicationTrustManager.cs
- DesignerWithHeader.cs
- ArraySubsetEnumerator.cs