Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Controls / ContextMenuService.cs / 1305600 / ContextMenuService.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Input; using MS.Internal.KnownBoxes; using System.ComponentModel; namespace System.Windows.Controls { ////// Service class that provides the system implementation for displaying ContextMenus. /// public static class ContextMenuService { #region Attached Properties ////// The DependencyProperty for the ContextMenu property. /// public static readonly DependencyProperty ContextMenuProperty = DependencyProperty.RegisterAttached( "ContextMenu", // Name typeof(ContextMenu), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata((ContextMenu)null, FrameworkPropertyMetadataOptions.None)); ////// Gets the value of the ContextMenu property on the specified object. /// /// The object on which to query the ContextMenu property. ///The value of the ContextMenu property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static ContextMenu GetContextMenu(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } ContextMenu cm = (ContextMenu)element.GetValue(ContextMenuProperty); if ((cm != null) && (element.Dispatcher != cm.Dispatcher)) { throw new ArgumentException(SR.Get(SRID.ContextMenuInDifferentDispatcher)); } return cm; } ////// Sets the ContextMenu property on the specified object. /// /// The object on which to set the ContextMenu property. /// /// The value of the ContextMenu property. If the value is of type ContextMenu, then /// that is the ContextMenu that will be used (without any modification). If the value /// is of any other type, then that value will be used as the content for a ContextMenu /// provided by this service, and the other attached properties of this service /// will be used to configure the ContextMenu. /// public static void SetContextMenu(DependencyObject element, ContextMenu value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(ContextMenuProperty, value); } ////// The DependencyProperty for the HorizontalOffset property. /// public static readonly DependencyProperty HorizontalOffsetProperty = DependencyProperty.RegisterAttached("HorizontalOffset", // Name typeof(double), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(0d)); // Default Value ////// Gets the value of the HorizontalOffset property. /// /// The object on which to query the property. ///The value of the property. [TypeConverter(typeof(LengthConverter))] [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static double GetHorizontalOffset(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (double)element.GetValue(HorizontalOffsetProperty); } ////// Sets the value of the HorizontalOffset property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetHorizontalOffset(DependencyObject element, double value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(HorizontalOffsetProperty, value); } ////// The DependencyProperty for the VerticalOffset property. /// public static readonly DependencyProperty VerticalOffsetProperty = DependencyProperty.RegisterAttached("VerticalOffset", // Name typeof(double), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(0d)); // Default Value ////// Gets the value of the VerticalOffset property. /// /// The object on which to query the property. ///The value of the property. [TypeConverter(typeof(LengthConverter))] [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static double GetVerticalOffset(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (double)element.GetValue(VerticalOffsetProperty); } ////// Sets the value of the VerticalOffset property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetVerticalOffset(DependencyObject element, double value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(VerticalOffsetProperty, value); } ////// The DependencyProperty for the HasDropShadow property. /// public static readonly DependencyProperty HasDropShadowProperty = DependencyProperty.RegisterAttached("HasDropShadow", // Name typeof(bool), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(BooleanBoxes.FalseBox)); //Default Value ////// Gets the value of the HasDropShadow property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static bool GetHasDropShadow(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (bool)element.GetValue(HasDropShadowProperty); } ////// Sets the value of the HasDropShadow property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetHasDropShadow(DependencyObject element, bool value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(HasDropShadowProperty, BooleanBoxes.Box(value)); } ////// The DependencyProperty for the PlacementTarget property. /// public static readonly DependencyProperty PlacementTargetProperty = DependencyProperty.RegisterAttached("PlacementTarget", // Name typeof(UIElement), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata((UIElement)null)); // Default Value ////// Gets the value of the PlacementTarget property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static UIElement GetPlacementTarget(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (UIElement)element.GetValue(PlacementTargetProperty); } ////// Sets the value of the PlacementTarget property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetPlacementTarget(DependencyObject element, UIElement value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(PlacementTargetProperty, value); } ////// The DependencyProperty for the PlacementRectangle property. /// public static readonly DependencyProperty PlacementRectangleProperty = DependencyProperty.RegisterAttached("PlacementRectangle", // Name typeof(Rect), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(Rect.Empty)); // Default Value ////// Gets the value of the PlacementRectangle property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static Rect GetPlacementRectangle(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (Rect)element.GetValue(PlacementRectangleProperty); } ////// Sets the value of the PlacementRectangle property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetPlacementRectangle(DependencyObject element, Rect value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(PlacementRectangleProperty, value); } ////// The DependencyProperty for the Placement property. /// public static readonly DependencyProperty PlacementProperty = DependencyProperty.RegisterAttached("Placement", // Name typeof(PlacementMode), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(PlacementMode.MousePoint)); // Default Value ////// Gets the value of the Placement property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static PlacementMode GetPlacement(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (PlacementMode)element.GetValue(PlacementProperty); } ////// Sets the value of the Placement property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetPlacement(DependencyObject element, PlacementMode value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(PlacementProperty, value); } ////// The DependencyProperty for the ShowOnDisabled property. /// public static readonly DependencyProperty ShowOnDisabledProperty = DependencyProperty.RegisterAttached("ShowOnDisabled", // Name typeof(bool), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(BooleanBoxes.FalseBox)); // Default Value ////// Gets the value of the ShowOnDisabled property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static bool GetShowOnDisabled(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (bool)element.GetValue(ShowOnDisabledProperty); } ////// Sets the value of the ShowOnDisabled property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetShowOnDisabled(DependencyObject element, bool value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(ShowOnDisabledProperty, BooleanBoxes.Box(value)); } ////// The DependencyProperty for the IsEnabled property. /// public static readonly DependencyProperty IsEnabledProperty = DependencyProperty.RegisterAttached("IsEnabled", // Name typeof(bool), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(BooleanBoxes.TrueBox)); // Default Value ////// Gets the value of the IsEnabled property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static bool GetIsEnabled(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (bool)element.GetValue(IsEnabledProperty); } ////// Sets the value of the IsEnabled property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetIsEnabled(DependencyObject element, bool value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(IsEnabledProperty, BooleanBoxes.Box(value)); } #endregion #region Events ////// An event that fires just before a ContextMenu should be opened. /// /// To manually open and close ContextMenus, mark this event as handled. /// Otherwise, the value of the the ContextMenu property will be used /// to automatically open a ContextMenu. /// public static readonly RoutedEvent ContextMenuOpeningEvent = EventManager.RegisterRoutedEvent("ContextMenuOpening", RoutingStrategy.Bubble, typeof(ContextMenuEventHandler), typeof(ContextMenuService)); ////// An event that fires just as a ContextMenu closes. /// public static readonly RoutedEvent ContextMenuClosingEvent = EventManager.RegisterRoutedEvent("ContextMenuClosing", RoutingStrategy.Bubble, typeof(ContextMenuEventHandler), typeof(ContextMenuService)); static ContextMenuService() { EventManager.RegisterClassHandler(typeof(UIElement), ContextMenuOpeningEvent, new ContextMenuEventHandler(OnContextMenuOpening)); EventManager.RegisterClassHandler(typeof(ContentElement), ContextMenuOpeningEvent, new ContextMenuEventHandler(OnContextMenuOpening)); EventManager.RegisterClassHandler(typeof(UIElement3D), ContextMenuOpeningEvent, new ContextMenuEventHandler(OnContextMenuOpening)); } private static void OnContextMenuOpening(object sender, ContextMenuEventArgs e) { if (e.TargetElement == null) { DependencyObject o = sender as DependencyObject; if (o != null) { if (ContextMenuIsEnabled(o)) { // Store for later e.TargetElement = o; } } } } #endregion #region Implementation internal static bool ContextMenuIsEnabled(DependencyObject o) { bool contextMenuIsEnabled = false; object menu = GetContextMenu(o); if ((menu != null) && GetIsEnabled(o)) { if (PopupControlService.IsElementEnabled(o) || GetShowOnDisabled(o)) { contextMenuIsEnabled = true; } } return contextMenuIsEnabled; } #endregion } ////// The callback type for handling a ContextMenuEvent /// public delegate void ContextMenuEventHandler(object sender, ContextMenuEventArgs e); ////// The data sent on a ContextMenuEvent /// public sealed class ContextMenuEventArgs : RoutedEventArgs { internal ContextMenuEventArgs(object source, bool opening) : this(source, opening, -1.0, -1.0) { } internal ContextMenuEventArgs(object source, bool opening, double left, double top) { _left = left; _top = top; RoutedEvent =(opening ? ContextMenuService.ContextMenuOpeningEvent : ContextMenuService.ContextMenuClosingEvent); Source = source; } ////// Position (horizontal) that context menu should displayed /// public double CursorLeft { get { return _left; } } ////// Position (vertical) that context menu should displayed /// public double CursorTop { get { return _top; } } internal DependencyObject TargetElement { get { return _targetElement; } set { _targetElement = value; } } ////// Support DynamicInvoke for ContextMenuEvent /// /// /// protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) { ContextMenuEventHandler handler = (ContextMenuEventHandler)genericHandler; handler(genericTarget, this); } private double _left; private double _top; private DependencyObject _targetElement; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Input; using MS.Internal.KnownBoxes; using System.ComponentModel; namespace System.Windows.Controls { ////// Service class that provides the system implementation for displaying ContextMenus. /// public static class ContextMenuService { #region Attached Properties ////// The DependencyProperty for the ContextMenu property. /// public static readonly DependencyProperty ContextMenuProperty = DependencyProperty.RegisterAttached( "ContextMenu", // Name typeof(ContextMenu), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata((ContextMenu)null, FrameworkPropertyMetadataOptions.None)); ////// Gets the value of the ContextMenu property on the specified object. /// /// The object on which to query the ContextMenu property. ///The value of the ContextMenu property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static ContextMenu GetContextMenu(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } ContextMenu cm = (ContextMenu)element.GetValue(ContextMenuProperty); if ((cm != null) && (element.Dispatcher != cm.Dispatcher)) { throw new ArgumentException(SR.Get(SRID.ContextMenuInDifferentDispatcher)); } return cm; } ////// Sets the ContextMenu property on the specified object. /// /// The object on which to set the ContextMenu property. /// /// The value of the ContextMenu property. If the value is of type ContextMenu, then /// that is the ContextMenu that will be used (without any modification). If the value /// is of any other type, then that value will be used as the content for a ContextMenu /// provided by this service, and the other attached properties of this service /// will be used to configure the ContextMenu. /// public static void SetContextMenu(DependencyObject element, ContextMenu value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(ContextMenuProperty, value); } ////// The DependencyProperty for the HorizontalOffset property. /// public static readonly DependencyProperty HorizontalOffsetProperty = DependencyProperty.RegisterAttached("HorizontalOffset", // Name typeof(double), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(0d)); // Default Value ////// Gets the value of the HorizontalOffset property. /// /// The object on which to query the property. ///The value of the property. [TypeConverter(typeof(LengthConverter))] [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static double GetHorizontalOffset(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (double)element.GetValue(HorizontalOffsetProperty); } ////// Sets the value of the HorizontalOffset property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetHorizontalOffset(DependencyObject element, double value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(HorizontalOffsetProperty, value); } ////// The DependencyProperty for the VerticalOffset property. /// public static readonly DependencyProperty VerticalOffsetProperty = DependencyProperty.RegisterAttached("VerticalOffset", // Name typeof(double), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(0d)); // Default Value ////// Gets the value of the VerticalOffset property. /// /// The object on which to query the property. ///The value of the property. [TypeConverter(typeof(LengthConverter))] [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static double GetVerticalOffset(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (double)element.GetValue(VerticalOffsetProperty); } ////// Sets the value of the VerticalOffset property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetVerticalOffset(DependencyObject element, double value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(VerticalOffsetProperty, value); } ////// The DependencyProperty for the HasDropShadow property. /// public static readonly DependencyProperty HasDropShadowProperty = DependencyProperty.RegisterAttached("HasDropShadow", // Name typeof(bool), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(BooleanBoxes.FalseBox)); //Default Value ////// Gets the value of the HasDropShadow property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static bool GetHasDropShadow(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (bool)element.GetValue(HasDropShadowProperty); } ////// Sets the value of the HasDropShadow property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetHasDropShadow(DependencyObject element, bool value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(HasDropShadowProperty, BooleanBoxes.Box(value)); } ////// The DependencyProperty for the PlacementTarget property. /// public static readonly DependencyProperty PlacementTargetProperty = DependencyProperty.RegisterAttached("PlacementTarget", // Name typeof(UIElement), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata((UIElement)null)); // Default Value ////// Gets the value of the PlacementTarget property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static UIElement GetPlacementTarget(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (UIElement)element.GetValue(PlacementTargetProperty); } ////// Sets the value of the PlacementTarget property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetPlacementTarget(DependencyObject element, UIElement value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(PlacementTargetProperty, value); } ////// The DependencyProperty for the PlacementRectangle property. /// public static readonly DependencyProperty PlacementRectangleProperty = DependencyProperty.RegisterAttached("PlacementRectangle", // Name typeof(Rect), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(Rect.Empty)); // Default Value ////// Gets the value of the PlacementRectangle property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static Rect GetPlacementRectangle(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (Rect)element.GetValue(PlacementRectangleProperty); } ////// Sets the value of the PlacementRectangle property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetPlacementRectangle(DependencyObject element, Rect value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(PlacementRectangleProperty, value); } ////// The DependencyProperty for the Placement property. /// public static readonly DependencyProperty PlacementProperty = DependencyProperty.RegisterAttached("Placement", // Name typeof(PlacementMode), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(PlacementMode.MousePoint)); // Default Value ////// Gets the value of the Placement property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static PlacementMode GetPlacement(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (PlacementMode)element.GetValue(PlacementProperty); } ////// Sets the value of the Placement property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetPlacement(DependencyObject element, PlacementMode value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(PlacementProperty, value); } ////// The DependencyProperty for the ShowOnDisabled property. /// public static readonly DependencyProperty ShowOnDisabledProperty = DependencyProperty.RegisterAttached("ShowOnDisabled", // Name typeof(bool), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(BooleanBoxes.FalseBox)); // Default Value ////// Gets the value of the ShowOnDisabled property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static bool GetShowOnDisabled(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (bool)element.GetValue(ShowOnDisabledProperty); } ////// Sets the value of the ShowOnDisabled property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetShowOnDisabled(DependencyObject element, bool value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(ShowOnDisabledProperty, BooleanBoxes.Box(value)); } ////// The DependencyProperty for the IsEnabled property. /// public static readonly DependencyProperty IsEnabledProperty = DependencyProperty.RegisterAttached("IsEnabled", // Name typeof(bool), // Type typeof(ContextMenuService), // Owner new FrameworkPropertyMetadata(BooleanBoxes.TrueBox)); // Default Value ////// Gets the value of the IsEnabled property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static bool GetIsEnabled(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (bool)element.GetValue(IsEnabledProperty); } ////// Sets the value of the IsEnabled property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetIsEnabled(DependencyObject element, bool value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(IsEnabledProperty, BooleanBoxes.Box(value)); } #endregion #region Events ////// An event that fires just before a ContextMenu should be opened. /// /// To manually open and close ContextMenus, mark this event as handled. /// Otherwise, the value of the the ContextMenu property will be used /// to automatically open a ContextMenu. /// public static readonly RoutedEvent ContextMenuOpeningEvent = EventManager.RegisterRoutedEvent("ContextMenuOpening", RoutingStrategy.Bubble, typeof(ContextMenuEventHandler), typeof(ContextMenuService)); ////// An event that fires just as a ContextMenu closes. /// public static readonly RoutedEvent ContextMenuClosingEvent = EventManager.RegisterRoutedEvent("ContextMenuClosing", RoutingStrategy.Bubble, typeof(ContextMenuEventHandler), typeof(ContextMenuService)); static ContextMenuService() { EventManager.RegisterClassHandler(typeof(UIElement), ContextMenuOpeningEvent, new ContextMenuEventHandler(OnContextMenuOpening)); EventManager.RegisterClassHandler(typeof(ContentElement), ContextMenuOpeningEvent, new ContextMenuEventHandler(OnContextMenuOpening)); EventManager.RegisterClassHandler(typeof(UIElement3D), ContextMenuOpeningEvent, new ContextMenuEventHandler(OnContextMenuOpening)); } private static void OnContextMenuOpening(object sender, ContextMenuEventArgs e) { if (e.TargetElement == null) { DependencyObject o = sender as DependencyObject; if (o != null) { if (ContextMenuIsEnabled(o)) { // Store for later e.TargetElement = o; } } } } #endregion #region Implementation internal static bool ContextMenuIsEnabled(DependencyObject o) { bool contextMenuIsEnabled = false; object menu = GetContextMenu(o); if ((menu != null) && GetIsEnabled(o)) { if (PopupControlService.IsElementEnabled(o) || GetShowOnDisabled(o)) { contextMenuIsEnabled = true; } } return contextMenuIsEnabled; } #endregion } ////// The callback type for handling a ContextMenuEvent /// public delegate void ContextMenuEventHandler(object sender, ContextMenuEventArgs e); ////// The data sent on a ContextMenuEvent /// public sealed class ContextMenuEventArgs : RoutedEventArgs { internal ContextMenuEventArgs(object source, bool opening) : this(source, opening, -1.0, -1.0) { } internal ContextMenuEventArgs(object source, bool opening, double left, double top) { _left = left; _top = top; RoutedEvent =(opening ? ContextMenuService.ContextMenuOpeningEvent : ContextMenuService.ContextMenuClosingEvent); Source = source; } ////// Position (horizontal) that context menu should displayed /// public double CursorLeft { get { return _left; } } ////// Position (vertical) that context menu should displayed /// public double CursorTop { get { return _top; } } internal DependencyObject TargetElement { get { return _targetElement; } set { _targetElement = value; } } ////// Support DynamicInvoke for ContextMenuEvent /// /// /// protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) { ContextMenuEventHandler handler = (ContextMenuEventHandler)genericHandler; handler(genericTarget, this); } private double _left; private double _top; private DependencyObject _targetElement; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HybridDictionary.cs
- TransactionInformation.cs
- BinHexEncoding.cs
- path.cs
- XamlClipboardData.cs
- SqlCommandAsyncResult.cs
- XmlSequenceWriter.cs
- ArraySet.cs
- PersonalizationProviderCollection.cs
- ExpressionVisitor.cs
- PeerMessageDispatcher.cs
- CultureData.cs
- TrustLevel.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- CodeTypeOfExpression.cs
- BaseHashHelper.cs
- SerialPort.cs
- Grid.cs
- Point3DAnimationUsingKeyFrames.cs
- ContractSearchPattern.cs
- XmlSchemaValidator.cs
- ServiceSecurityAuditElement.cs
- HitTestParameters.cs
- TreeWalkHelper.cs
- JapaneseLunisolarCalendar.cs
- ColorTranslator.cs
- AttachedPropertyMethodSelector.cs
- ButtonBase.cs
- TextElementCollectionHelper.cs
- Transform3D.cs
- CryptoProvider.cs
- EmptyControlCollection.cs
- AccessKeyManager.cs
- DataServiceExpressionVisitor.cs
- DocumentReference.cs
- TypeConverter.cs
- ToolStripDropDownClosedEventArgs.cs
- SecurityTokenResolver.cs
- SponsorHelper.cs
- MediaElement.cs
- MatrixAnimationBase.cs
- SqlClientWrapperSmiStreamChars.cs
- Evaluator.cs
- KerberosTokenFactoryCredential.cs
- OciHandle.cs
- BitArray.cs
- shaper.cs
- TypeKeyValue.cs
- XmlAtomicValue.cs
- ColorConvertedBitmap.cs
- ReadWriteControlDesigner.cs
- XPathScanner.cs
- TextBlock.cs
- ToolTip.cs
- RemotingClientProxy.cs
- GridPattern.cs
- BrowserCapabilitiesCompiler.cs
- XmlElementList.cs
- Point3DCollection.cs
- HScrollProperties.cs
- RegistrationServices.cs
- MulticastDelegate.cs
- ScopelessEnumAttribute.cs
- SafeNativeMethods.cs
- CheckedPointers.cs
- Overlapped.cs
- ToolboxBitmapAttribute.cs
- AutomationPropertyInfo.cs
- DispatcherExceptionFilterEventArgs.cs
- SessionPageStatePersister.cs
- SafeHGlobalHandleCritical.cs
- AggregationMinMaxHelpers.cs
- DataSourceControlBuilder.cs
- ThemeInfoAttribute.cs
- SecurityDocument.cs
- BamlBinaryReader.cs
- XPathParser.cs
- Keyboard.cs
- InteropBitmapSource.cs
- Column.cs
- XmlSerializerVersionAttribute.cs
- XPathCompileException.cs
- GenericIdentity.cs
- TearOffProxy.cs
- PrtCap_Public.cs
- GeometryModel3D.cs
- Type.cs
- ParserHooks.cs
- ClusterUtils.cs
- SourceChangedEventArgs.cs
- DataGridViewTopLeftHeaderCell.cs
- TemplateField.cs
- SrgsSemanticInterpretationTag.cs
- SystemPens.cs
- ChoiceConverter.cs
- ScaleTransform3D.cs
- EntryWrittenEventArgs.cs
- SpellerHighlightLayer.cs
- EmptyEnumerable.cs
- mda.cs