/// <summary> /// Notify corresponding KeyTipAdorner regarding size change. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void OnSizeChanged(object sender, SizeChangedEventArgs e) { KeyTipControl keyTipControl = sender as KeyTipControl; if (keyTipControl != null && keyTipControl.KeyTipAdorner != null) { keyTipControl.KeyTipAdorner.OnKeyTipControlSizeChanged(e); } }
/// <summary> /// Links the given KeyTipControl as the visual child of self. /// In the process sets various properties of the control. /// </summary> public void LinkKeyTipControl(DependencyObject keyTipElement, KeyTipControl keyTipControl) { Debug.Assert(_keyTipControl == null && keyTipControl.KeyTipAdorner == null); _keyTipControl = keyTipControl; _keyTipControl.KeyTipAdorner = this; _keyTipControl.Text = KeyTipService.GetKeyTip(keyTipElement).ToUpper(KeyTipService.GetCultureForElement(keyTipElement)); _keyTipControl.IsEnabled = (bool)keyTipElement.GetValue(UIElement.IsEnabledProperty); Style keyTipStyle = KeyTipService.GetKeyTipStyle(keyTipElement); _keyTipControl.Style = keyTipStyle; _keyTipControl.RenderTransform = _keyTipTransform; bool clearCustomProperties = true; if (keyTipStyle == null) { Ribbon.Ribbon ribbon = RibbonControlService.GetRibbon(PlacementTarget); if (ribbon != null) { // Use Ribbon properties if the owner element belongs to a Ribbon. keyTipStyle = KeyTipService.GetKeyTipStyle(ribbon); if (keyTipStyle != null) { _keyTipControl.Style = keyTipStyle; } else { clearCustomProperties = false; _keyTipControl.Background = ribbon.Background; _keyTipControl.BorderBrush = ribbon.BorderBrush; _keyTipControl.Foreground = ribbon.Foreground; } } } if (clearCustomProperties) { _keyTipControl.ClearValue(Control.BackgroundProperty); _keyTipControl.ClearValue(Control.BorderBrushProperty); _keyTipControl.ClearValue(Control.ForegroundProperty); } AddVisualChild(_keyTipControl); EnsureTransform(); }