gpt4 book ai didi

wpf - 在焦点上显示 WPF 工具提示的侵入性最小的方法是什么?

转载 作者:行者123 更新时间:2023-12-05 01:15:06 24 4
gpt4 key购买 nike

当以下控件获得焦点时,显示工具提示所需的最少步骤数是多少?

<TextBox ToolTip="Hello there!" ... />

我在 GotFocus 中尝试了以下内容

    private void ..._GotFocus(object sender, RoutedEventArgs e) {
var element = (FrameworkElement)sender;
var tooltip = element.ToolTip;
if (!(tooltip is ToolTip)) {
tooltip = new ToolTip { Content = tooltip };
element.ToolTip = tooltip;
}

((ToolTip)tooltip).IsOpen = true;
}

但是,它似乎忽略了此控件的 ToolTipService.Placement 和更高级别的 SystemParameters.ToolTipPopupAnimationKey 设置。

我怎样才能使它工作并遵守通常适用于工具提示的所有设置(显然除了时间之外)?

最佳答案

我会在附加属性中构建一个 IsKeyboardFocused 绑定(bind),如下所示:

 public class ShowOnFocusTooltip : DependencyObject
{
public object GetToolTip(...
public void SetToolTip(...
public static readonly DependencyProperty ToolTipProperty = DependencyProperty.RegisterAttached(..., new PropertyMetadata
{
PropertyChangedCallback = (obj, e) =>
{
ToolTipService.SetToolTip(obj,
e.NewValue==null ? null :
BuildToolTip(obj, e.NewValue));
}
});

private object BuildToolTip(DependencyObject control, object content)
{
var tooltip = content is ToolTip ? (ToolTip)content : new ToolTip { Content = content };
tooltip.SetBinding(ToolTip.IsOpenProperty,
new Binding("IsKeyboardFocusWithin") { Source = control });
return tooltip;
}

关于wpf - 在焦点上显示 WPF 工具提示的侵入性最小的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2753534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com