Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / View / ExtensionWindowHeader.cs / 1305376 / ExtensionWindowHeader.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 WindowHeader like control, which is used with ExtenstionWindows to allow //moving and closing. Actual moving logic is handled by ExtensionSurface class [TemplatePart(Name = "PART_Header")] [TemplatePart(Name = "PART_CloseButton")] class ExtensionWindowHeader : Control { public static readonly DependencyProperty TitleProperty = DependencyProperty.Register("Title", typeof(string), typeof(ExtensionWindowHeader)); public static readonly DependencyProperty ButtonCloseIconProperty = DependencyProperty.Register("ButtonCloseIcon", typeof(DrawingBrush), typeof(ExtensionWindowHeader)); public static readonly DependencyProperty IconProperty = DependencyProperty.Register("Icon", typeof(DrawingBrush), typeof(ExtensionWindowHeader)); public static readonly DependencyProperty DropDownMenuIconProperty = DependencyProperty.Register("DropDownMenuIcon", typeof(DrawingBrush), typeof(ExtensionWindowHeader)); Button closeButton; 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 ExtensionWindowHeader() { DefaultStyleKeyProperty.OverrideMetadata( typeof(ExtensionWindowHeader), new FrameworkPropertyMetadata(typeof(ExtensionWindowHeader))); } public string Title { get { return (string)GetValue(TitleProperty); } set { SetValue(TitleProperty, value); } } [Fx.Tag.KnownXamlExternal] public DrawingBrush ButtonCloseIcon { get { return (DrawingBrush)GetValue(ButtonCloseIconProperty); } set { SetValue(ButtonCloseIconProperty, value); } } [Fx.Tag.KnownXamlExternal] public DrawingBrush Icon { get { return (DrawingBrush)GetValue(IconProperty); } set { SetValue(IconProperty, value); } } [Fx.Tag.KnownXamlExternal] public DrawingBrush DropDownMenuIcon { get { return (DrawingBrush)GetValue(DropDownMenuIconProperty); } set { SetValue(DropDownMenuIconProperty, value); } } public override void OnApplyTemplate() { base.OnApplyTemplate(); this.closeButton = this.Template.FindName("PART_CloseButton", this) as Button; if (null != this.closeButton) { this.closeButton.Click += new RoutedEventHandler(delegate(object sender, RoutedEventArgs e) { ExtensionWindow.RaiseWindowCloseEvent(this.parent); } ); } } protected override void OnMouseLeftButtonDown(MouseButtonEventArgs args) { base.OnMouseLeftButtonDown(args); if (ExtensionSurface.PlacementMode.Absolute == ExtensionSurface.GetMode(this.parent)) { this.offset = Mouse.GetPosition(this); Mouse.OverrideCursor = Cursors.Arrow; CaptureMouse(); } } protected override void OnMouseMove(MouseEventArgs args) { base.OnMouseMove(args); if (args.LeftButton == MouseButtonState.Pressed && this.IsMouseCaptured) { Point moveTo = Mouse.GetPosition(this.surface); moveTo.Offset(-offset.X, -offset.Y); this.surface.SetWindowPosition(this.parent, moveTo); } } protected override void OnMouseLeftButtonUp(MouseButtonEventArgs args) { base.OnMouseLeftButtonUp(args); if (this.IsMouseCaptured) { 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
- Merger.cs
- Type.cs
- FontCollection.cs
- PropertyEntry.cs
- Cursors.cs
- DbConnectionInternal.cs
- StateRuntime.cs
- DataGridAutoFormat.cs
- MasterPageBuildProvider.cs
- UpdateCommand.cs
- Int32CollectionValueSerializer.cs
- ListDesigner.cs
- PasswordBox.cs
- XmlSignificantWhitespace.cs
- ExtenderControl.cs
- LinqMaximalSubtreeNominator.cs
- ForwardPositionQuery.cs
- CryptographicAttribute.cs
- ConfigXmlText.cs
- PeerService.cs
- SiteIdentityPermission.cs
- columnmapfactory.cs
- RedistVersionInfo.cs
- SqlTypeSystemProvider.cs
- ScriptManagerProxy.cs
- ToolStripItemTextRenderEventArgs.cs
- PackWebResponse.cs
- DefaultAssemblyResolver.cs
- IEnumerable.cs
- Int32Animation.cs
- RenderingEventArgs.cs
- NonSerializedAttribute.cs
- PowerModeChangedEventArgs.cs
- ConfigurationSettings.cs
- ImageFormatConverter.cs
- UnionCodeGroup.cs
- RuntimeHandles.cs
- ColumnWidthChangedEvent.cs
- MatrixValueSerializer.cs
- FixedSOMElement.cs
- HwndHost.cs
- SmiTypedGetterSetter.cs
- DirtyTextRange.cs
- CodeDirectoryCompiler.cs
- FieldCollectionEditor.cs
- ExpandSegmentCollection.cs
- WebZone.cs
- MemberHolder.cs
- Visitor.cs
- SetStoryboardSpeedRatio.cs
- ResourceManagerWrapper.cs
- DataBoundLiteralControl.cs
- ReadOnlyNameValueCollection.cs
- Calendar.cs
- EncodingNLS.cs
- WebControlsSection.cs
- InputLanguageCollection.cs
- XPathAncestorQuery.cs
- OrderPreservingPipeliningMergeHelper.cs
- XAMLParseException.cs
- SerialStream.cs
- WebPartZoneCollection.cs
- Material.cs
- XmlSchemaInclude.cs
- EntityCommand.cs
- XmlElementCollection.cs
- NamespaceMapping.cs
- DataGridViewColumnConverter.cs
- DataGridHyperlinkColumn.cs
- ConsumerConnectionPointCollection.cs
- EncodingInfo.cs
- ContainerAction.cs
- DesignerEditorPartChrome.cs
- TaskExceptionHolder.cs
- BaseDataList.cs
- DisplayMemberTemplateSelector.cs
- SelectionProcessor.cs
- ErrorRuntimeConfig.cs
- OleDbRowUpdatingEvent.cs
- GetCardDetailsRequest.cs
- SqlProfileProvider.cs
- WmlTextViewAdapter.cs
- InheritanceContextChangedEventManager.cs
- SelectionRangeConverter.cs
- PersonalizationProviderHelper.cs
- InfocardChannelParameter.cs
- DataGridView.cs
- BasicHttpSecurity.cs
- PreloadedPackages.cs
- GroupJoinQueryOperator.cs
- CurrentChangedEventManager.cs
- LoadWorkflowByInstanceKeyCommand.cs
- CompilationSection.cs
- DataGridViewUtilities.cs
- TransactionScope.cs
- XmlElement.cs
- CodeNamespaceImportCollection.cs
- AccessDataSourceView.cs
- TextCompositionEventArgs.cs
- Operator.cs