Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Controls / ToolTipService.cs / 1305600 / ToolTipService.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 System.Windows.Media; using MS.Internal.KnownBoxes; using System.ComponentModel; namespace System.Windows.Controls { ////// Service class that provides the system implementation for displaying ToolTips. /// public static class ToolTipService { #region Attached Properties ////// The DependencyProperty for the ToolTip property. /// public static readonly DependencyProperty ToolTipProperty = DependencyProperty.RegisterAttached( "ToolTip", // Name typeof(object), // Type typeof(ToolTipService), // Owner new FrameworkPropertyMetadata((object) null)); ////// Gets the value of the ToolTip property on the specified object. /// /// The object on which to query the ToolTip property. ///The value of the ToolTip property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static object GetToolTip(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return element.GetValue(ToolTipProperty); } ////// Sets the ToolTip property on the specified object. /// /// The object on which to set the ToolTip property. /// /// The value of the ToolTip property. If the value is of type ToolTip, then /// that is the ToolTip 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 ToolTip /// provided by this service, and the other attached properties of this service /// will be used to configure the ToolTip. /// public static void SetToolTip(DependencyObject element, object value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(ToolTipProperty, value); } ////// The DependencyProperty for the HorizontalOffset property. /// public static readonly DependencyProperty HorizontalOffsetProperty = DependencyProperty.RegisterAttached("HorizontalOffset", // Name typeof(double), // Type typeof(ToolTipService), // 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(ToolTipService), // 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 HasDropShadow /// public static readonly DependencyProperty HasDropShadowProperty = DependencyProperty.RegisterAttached("HasDropShadow", // Name typeof(bool), // Type typeof(ToolTipService), // 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(ToolTipService), // 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(ToolTipService), // 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(ToolTipService), // Owner new FrameworkPropertyMetadata(PlacementMode.Mouse)); // 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(ToolTipService), // 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)); } ////// Read-only Key Token for the IsOpen property. /// private static readonly DependencyPropertyKey IsOpenPropertyKey = DependencyProperty.RegisterAttachedReadOnly("IsOpen", // Name typeof(bool), // Type typeof(ToolTipService), // Owner new FrameworkPropertyMetadata(BooleanBoxes.FalseBox)); // Default Value ////// The DependencyProperty for the IsOpen property. /// public static readonly DependencyProperty IsOpenProperty = IsOpenPropertyKey.DependencyProperty; ////// Gets the value of the IsOpen property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static bool GetIsOpen(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (bool)element.GetValue(IsOpenProperty); } ////// Sets the value of the IsOpen property. /// /// The object on which to set the value. /// The desired value of the property. private static void SetIsOpen(DependencyObject element, bool value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(IsOpenPropertyKey, BooleanBoxes.Box(value)); } ////// The DependencyProperty for the IsEnabled property. /// public static readonly DependencyProperty IsEnabledProperty = DependencyProperty.RegisterAttached("IsEnabled", // Name typeof(bool), // Type typeof(ToolTipService), // 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)); } private static bool PositiveValueValidation(object o) { return ((int)o) >= 0; } ////// The DependencyProperty for the ShowDuration property. /// public static readonly DependencyProperty ShowDurationProperty = DependencyProperty.RegisterAttached("ShowDuration", // Name typeof(int), // Type typeof(ToolTipService), // Owner new FrameworkPropertyMetadata(5000), // Default Value new ValidateValueCallback(PositiveValueValidation)); // Value validation ////// Gets the value of the ShowDuration property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static int GetShowDuration(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (int)element.GetValue(ShowDurationProperty); } ////// Sets the value of the ShowDuration property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetShowDuration(DependencyObject element, int value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(ShowDurationProperty, value); } ////// The DependencyProperty for the InitialShowDelay property. /// public static readonly DependencyProperty InitialShowDelayProperty = DependencyProperty.RegisterAttached("InitialShowDelay", // Name typeof(int), // Type typeof(ToolTipService), // Owner new FrameworkPropertyMetadata(SystemParameters.MouseHoverTimeMilliseconds), // Default Value new ValidateValueCallback(PositiveValueValidation)); // Value validation ////// Gets the value of the InitialShowDelay property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static int GetInitialShowDelay(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (int)element.GetValue(InitialShowDelayProperty); } ////// Sets the value of the InitialShowDelay property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetInitialShowDelay(DependencyObject element, int value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(InitialShowDelayProperty, value); } ////// The DependencyProperty for the BetweenShowDelay property. /// public static readonly DependencyProperty BetweenShowDelayProperty = DependencyProperty.RegisterAttached("BetweenShowDelay", // Name typeof(int), // Type typeof(ToolTipService), // Owner new FrameworkPropertyMetadata(100), // Default Value new ValidateValueCallback(PositiveValueValidation)); // Value validation ////// Gets the value of the BetweenShowDelay property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static int GetBetweenShowDelay(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (int)element.GetValue(BetweenShowDelayProperty); } ////// Sets the value of the BetweenShowDelay property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetBetweenShowDelay(DependencyObject element, int value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(BetweenShowDelayProperty, value); } #endregion #region Events ////// The event raised when a ToolTip is going to be shown on an element. /// /// Mark the event as handled if manually showing a ToolTip. /// /// Replacing the value of the ToolTip property is allowed /// (example: for delay-loading). Do not mark the event as handled /// in this case if the system is to show the ToolTip. /// public static readonly RoutedEvent ToolTipOpeningEvent = EventManager.RegisterRoutedEvent("ToolTipOpening", RoutingStrategy.Direct, typeof(ToolTipEventHandler), typeof(ToolTipService)); ////// The event raised when a ToolTip on an element that was shown /// should now be hidden. /// public static readonly RoutedEvent ToolTipClosingEvent = EventManager.RegisterRoutedEvent("ToolTipClosing", RoutingStrategy.Direct, typeof(ToolTipEventHandler), typeof(ToolTipService)); #endregion #region Implementation internal static readonly RoutedEvent FindToolTipEvent = EventManager.RegisterRoutedEvent("FindToolTip", RoutingStrategy.Bubble, typeof(FindToolTipEventHandler), typeof(ToolTipService)); static ToolTipService() { EventManager.RegisterClassHandler(typeof(UIElement), FindToolTipEvent, new FindToolTipEventHandler(OnFindToolTip)); EventManager.RegisterClassHandler(typeof(ContentElement), FindToolTipEvent, new FindToolTipEventHandler(OnFindToolTip)); EventManager.RegisterClassHandler(typeof(UIElement3D), FindToolTipEvent, new FindToolTipEventHandler(OnFindToolTip)); } private static void OnFindToolTip(object sender, FindToolTipEventArgs e) { if (e.TargetElement == null) { DependencyObject o = sender as DependencyObject; if (o != null) { if (PopupControlService.Current.StopLookingForToolTip(o)) { // Stop looking e.Handled = true; e.KeepCurrentActive = true; } else { if (ToolTipIsEnabled(o)) { // Store for later e.TargetElement = o; e.Handled = true; } } } } } private static bool ToolTipIsEnabled(DependencyObject o) { if ((GetToolTip(o) != null) && GetIsEnabled(o)) { if (PopupControlService.IsElementEnabled(o) || GetShowOnDisabled(o)) { return true; } } return false; } #endregion } ////// The callback type for the events when a ToolTip should open or close. /// public delegate void ToolTipEventHandler(object sender, ToolTipEventArgs e); ////// Event arguments for the events when a ToolTip should open or close. /// public sealed class ToolTipEventArgs : RoutedEventArgs { ////// Called internally to create opening or closing event arguments. /// /// Whether this is the opening or closing event. internal ToolTipEventArgs(bool opening) { if (opening) { RoutedEvent = ToolTipService.ToolTipOpeningEvent; } else { RoutedEvent = ToolTipService.ToolTipClosingEvent; } } ////// Invokes the event handler. /// /// The delegate to call. /// The target of the event. protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) { ToolTipEventHandler handler = (ToolTipEventHandler)genericHandler; handler(genericTarget, this); } } internal delegate void FindToolTipEventHandler(object sender, FindToolTipEventArgs e); internal sealed class FindToolTipEventArgs : RoutedEventArgs { internal FindToolTipEventArgs() { RoutedEvent = ToolTipService.FindToolTipEvent; } internal DependencyObject TargetElement { get { return _targetElement; } set { _targetElement = value; } } internal bool KeepCurrentActive { get { return _keepCurrentActive; } set { _keepCurrentActive = value; } } ////// Invokes the event handler. /// /// The delegate to call. /// The target of the event. protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) { FindToolTipEventHandler handler = (FindToolTipEventHandler)genericHandler; handler(genericTarget, this); } private DependencyObject _targetElement; private bool _keepCurrentActive; } } // 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 System.Windows.Media; using MS.Internal.KnownBoxes; using System.ComponentModel; namespace System.Windows.Controls { ////// Service class that provides the system implementation for displaying ToolTips. /// public static class ToolTipService { #region Attached Properties ////// The DependencyProperty for the ToolTip property. /// public static readonly DependencyProperty ToolTipProperty = DependencyProperty.RegisterAttached( "ToolTip", // Name typeof(object), // Type typeof(ToolTipService), // Owner new FrameworkPropertyMetadata((object) null)); ////// Gets the value of the ToolTip property on the specified object. /// /// The object on which to query the ToolTip property. ///The value of the ToolTip property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static object GetToolTip(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return element.GetValue(ToolTipProperty); } ////// Sets the ToolTip property on the specified object. /// /// The object on which to set the ToolTip property. /// /// The value of the ToolTip property. If the value is of type ToolTip, then /// that is the ToolTip 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 ToolTip /// provided by this service, and the other attached properties of this service /// will be used to configure the ToolTip. /// public static void SetToolTip(DependencyObject element, object value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(ToolTipProperty, value); } ////// The DependencyProperty for the HorizontalOffset property. /// public static readonly DependencyProperty HorizontalOffsetProperty = DependencyProperty.RegisterAttached("HorizontalOffset", // Name typeof(double), // Type typeof(ToolTipService), // 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(ToolTipService), // 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 HasDropShadow /// public static readonly DependencyProperty HasDropShadowProperty = DependencyProperty.RegisterAttached("HasDropShadow", // Name typeof(bool), // Type typeof(ToolTipService), // 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(ToolTipService), // 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(ToolTipService), // 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(ToolTipService), // Owner new FrameworkPropertyMetadata(PlacementMode.Mouse)); // 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(ToolTipService), // 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)); } ////// Read-only Key Token for the IsOpen property. /// private static readonly DependencyPropertyKey IsOpenPropertyKey = DependencyProperty.RegisterAttachedReadOnly("IsOpen", // Name typeof(bool), // Type typeof(ToolTipService), // Owner new FrameworkPropertyMetadata(BooleanBoxes.FalseBox)); // Default Value ////// The DependencyProperty for the IsOpen property. /// public static readonly DependencyProperty IsOpenProperty = IsOpenPropertyKey.DependencyProperty; ////// Gets the value of the IsOpen property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static bool GetIsOpen(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (bool)element.GetValue(IsOpenProperty); } ////// Sets the value of the IsOpen property. /// /// The object on which to set the value. /// The desired value of the property. private static void SetIsOpen(DependencyObject element, bool value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(IsOpenPropertyKey, BooleanBoxes.Box(value)); } ////// The DependencyProperty for the IsEnabled property. /// public static readonly DependencyProperty IsEnabledProperty = DependencyProperty.RegisterAttached("IsEnabled", // Name typeof(bool), // Type typeof(ToolTipService), // 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)); } private static bool PositiveValueValidation(object o) { return ((int)o) >= 0; } ////// The DependencyProperty for the ShowDuration property. /// public static readonly DependencyProperty ShowDurationProperty = DependencyProperty.RegisterAttached("ShowDuration", // Name typeof(int), // Type typeof(ToolTipService), // Owner new FrameworkPropertyMetadata(5000), // Default Value new ValidateValueCallback(PositiveValueValidation)); // Value validation ////// Gets the value of the ShowDuration property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static int GetShowDuration(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (int)element.GetValue(ShowDurationProperty); } ////// Sets the value of the ShowDuration property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetShowDuration(DependencyObject element, int value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(ShowDurationProperty, value); } ////// The DependencyProperty for the InitialShowDelay property. /// public static readonly DependencyProperty InitialShowDelayProperty = DependencyProperty.RegisterAttached("InitialShowDelay", // Name typeof(int), // Type typeof(ToolTipService), // Owner new FrameworkPropertyMetadata(SystemParameters.MouseHoverTimeMilliseconds), // Default Value new ValidateValueCallback(PositiveValueValidation)); // Value validation ////// Gets the value of the InitialShowDelay property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static int GetInitialShowDelay(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (int)element.GetValue(InitialShowDelayProperty); } ////// Sets the value of the InitialShowDelay property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetInitialShowDelay(DependencyObject element, int value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(InitialShowDelayProperty, value); } ////// The DependencyProperty for the BetweenShowDelay property. /// public static readonly DependencyProperty BetweenShowDelayProperty = DependencyProperty.RegisterAttached("BetweenShowDelay", // Name typeof(int), // Type typeof(ToolTipService), // Owner new FrameworkPropertyMetadata(100), // Default Value new ValidateValueCallback(PositiveValueValidation)); // Value validation ////// Gets the value of the BetweenShowDelay property. /// /// The object on which to query the property. ///The value of the property. [AttachedPropertyBrowsableForType(typeof(DependencyObject))] public static int GetBetweenShowDelay(DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } return (int)element.GetValue(BetweenShowDelayProperty); } ////// Sets the value of the BetweenShowDelay property. /// /// The object on which to set the value. /// The desired value of the property. public static void SetBetweenShowDelay(DependencyObject element, int value) { if (element == null) { throw new ArgumentNullException("element"); } element.SetValue(BetweenShowDelayProperty, value); } #endregion #region Events ////// The event raised when a ToolTip is going to be shown on an element. /// /// Mark the event as handled if manually showing a ToolTip. /// /// Replacing the value of the ToolTip property is allowed /// (example: for delay-loading). Do not mark the event as handled /// in this case if the system is to show the ToolTip. /// public static readonly RoutedEvent ToolTipOpeningEvent = EventManager.RegisterRoutedEvent("ToolTipOpening", RoutingStrategy.Direct, typeof(ToolTipEventHandler), typeof(ToolTipService)); ////// The event raised when a ToolTip on an element that was shown /// should now be hidden. /// public static readonly RoutedEvent ToolTipClosingEvent = EventManager.RegisterRoutedEvent("ToolTipClosing", RoutingStrategy.Direct, typeof(ToolTipEventHandler), typeof(ToolTipService)); #endregion #region Implementation internal static readonly RoutedEvent FindToolTipEvent = EventManager.RegisterRoutedEvent("FindToolTip", RoutingStrategy.Bubble, typeof(FindToolTipEventHandler), typeof(ToolTipService)); static ToolTipService() { EventManager.RegisterClassHandler(typeof(UIElement), FindToolTipEvent, new FindToolTipEventHandler(OnFindToolTip)); EventManager.RegisterClassHandler(typeof(ContentElement), FindToolTipEvent, new FindToolTipEventHandler(OnFindToolTip)); EventManager.RegisterClassHandler(typeof(UIElement3D), FindToolTipEvent, new FindToolTipEventHandler(OnFindToolTip)); } private static void OnFindToolTip(object sender, FindToolTipEventArgs e) { if (e.TargetElement == null) { DependencyObject o = sender as DependencyObject; if (o != null) { if (PopupControlService.Current.StopLookingForToolTip(o)) { // Stop looking e.Handled = true; e.KeepCurrentActive = true; } else { if (ToolTipIsEnabled(o)) { // Store for later e.TargetElement = o; e.Handled = true; } } } } } private static bool ToolTipIsEnabled(DependencyObject o) { if ((GetToolTip(o) != null) && GetIsEnabled(o)) { if (PopupControlService.IsElementEnabled(o) || GetShowOnDisabled(o)) { return true; } } return false; } #endregion } ////// The callback type for the events when a ToolTip should open or close. /// public delegate void ToolTipEventHandler(object sender, ToolTipEventArgs e); ////// Event arguments for the events when a ToolTip should open or close. /// public sealed class ToolTipEventArgs : RoutedEventArgs { ////// Called internally to create opening or closing event arguments. /// /// Whether this is the opening or closing event. internal ToolTipEventArgs(bool opening) { if (opening) { RoutedEvent = ToolTipService.ToolTipOpeningEvent; } else { RoutedEvent = ToolTipService.ToolTipClosingEvent; } } ////// Invokes the event handler. /// /// The delegate to call. /// The target of the event. protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) { ToolTipEventHandler handler = (ToolTipEventHandler)genericHandler; handler(genericTarget, this); } } internal delegate void FindToolTipEventHandler(object sender, FindToolTipEventArgs e); internal sealed class FindToolTipEventArgs : RoutedEventArgs { internal FindToolTipEventArgs() { RoutedEvent = ToolTipService.FindToolTipEvent; } internal DependencyObject TargetElement { get { return _targetElement; } set { _targetElement = value; } } internal bool KeepCurrentActive { get { return _keepCurrentActive; } set { _keepCurrentActive = value; } } ////// Invokes the event handler. /// /// The delegate to call. /// The target of the event. protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) { FindToolTipEventHandler handler = (FindToolTipEventHandler)genericHandler; handler(genericTarget, this); } private DependencyObject _targetElement; private bool _keepCurrentActive; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LinkClickEvent.cs
- ResolveMatchesApril2005.cs
- DesignerOptionService.cs
- RegexMatchCollection.cs
- SimpleLine.cs
- HMACSHA384.cs
- ObjectDisposedException.cs
- CroppedBitmap.cs
- FileSystemInfo.cs
- MetafileHeaderWmf.cs
- FocusManager.cs
- HtmlInputReset.cs
- ProcessHostFactoryHelper.cs
- DataBoundLiteralControl.cs
- TextBox.cs
- DiscoveryClientChannelFactory.cs
- TraceListeners.cs
- contentDescriptor.cs
- SearchForVirtualItemEventArgs.cs
- GeneralTransformGroup.cs
- ClassicBorderDecorator.cs
- Rfc2898DeriveBytes.cs
- HttpBrowserCapabilitiesWrapper.cs
- Site.cs
- WebConfigurationManager.cs
- OpenTypeCommon.cs
- VBIdentifierName.cs
- WindowHideOrCloseTracker.cs
- ActiveDesignSurfaceEvent.cs
- FileClassifier.cs
- RangeContentEnumerator.cs
- SystemGatewayIPAddressInformation.cs
- SqlMethodAttribute.cs
- EventMemberCodeDomSerializer.cs
- IDQuery.cs
- AccessibleObject.cs
- Roles.cs
- ChannelServices.cs
- WinInetCache.cs
- Confirm.cs
- AttachmentService.cs
- ToggleButtonAutomationPeer.cs
- ManipulationBoundaryFeedbackEventArgs.cs
- InfoCardClaimCollection.cs
- ReturnType.cs
- ExpandSegment.cs
- MediaPlayer.cs
- ProxyWebPartConnectionCollection.cs
- WebScriptMetadataInstanceContextProvider.cs
- XmlSchemaAnyAttribute.cs
- CommonRemoteMemoryBlock.cs
- Site.cs
- TextRenderingModeValidation.cs
- ExeContext.cs
- ScriptingWebServicesSectionGroup.cs
- DataException.cs
- CodeIndexerExpression.cs
- ProtocolsSection.cs
- StylusPointProperties.cs
- AspNetSynchronizationContext.cs
- GridEntry.cs
- LogLogRecordEnumerator.cs
- ThreadStateException.cs
- SmtpNegotiateAuthenticationModule.cs
- CodeAttachEventStatement.cs
- CriticalFinalizerObject.cs
- DiscoveryMessageSequenceCD1.cs
- FlowSwitch.cs
- WhitespaceRuleLookup.cs
- Directory.cs
- GroupByExpressionRewriter.cs
- OraclePermissionAttribute.cs
- LinkConverter.cs
- BindingMemberInfo.cs
- RegexStringValidator.cs
- ChangesetResponse.cs
- XmlWriterDelegator.cs
- Focus.cs
- WebBrowserUriTypeConverter.cs
- Bits.cs
- HtmlGenericControl.cs
- InternalException.cs
- TokenizerHelper.cs
- ProgressBarRenderer.cs
- CodeDomLocalizationProvider.cs
- WebPartPersonalization.cs
- ExtensionFile.cs
- ThemeInfoAttribute.cs
- DocumentOrderComparer.cs
- ScrollChrome.cs
- CompilerWrapper.cs
- RightsManagementResourceHelper.cs
- UnsafeNativeMethods.cs
- PerformanceCounter.cs
- FlowDocumentPaginator.cs
- EdmToObjectNamespaceMap.cs
- WrappedReader.cs
- Set.cs
- HScrollProperties.cs
- ACE.cs