gpt4 book ai didi

c# - 具有自定义控件属性值的 WPF 自定义控件的工具提示

转载 作者:太空狗 更新时间:2023-10-30 01:10:07 25 4
gpt4 key购买 nike

在 WPF 应用程序中,我有一个自定义控件。

public class MyControl : Control
{
static MyControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyControl), new FrameworkPropertyMetadata(typeof(MyControl)));
}

public static readonly DependencyProperty ControlStatusProperty = DependencyProperty.Register("ControlStatus", typeof(int), typeof(MyControl), new PropertyMetadata(16));

public int ControlStatus
{
get
{
return (int)GetValue(ControlStatusProperty);
}
set
{
SetValue(ControlStatusProperty, value);
ChangeVisualState(false);
}
}
...
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
...
ToolTipService.SetToolTip(this, "Status: " + ControlStatus);
}

private void ChangeVisualState(bool useTransitions)
{
...
ToolTipService.SetToolTip(this, "Status: " + ControlStatus);
}

问题是:ToolTip 总是显示 ControlStatus 属性的值,该值在 OnApplyTemplate() 方法执行时已经存在。
自定义控件的 ControlStatus 属性已在运行时更改,但工具提示仍始终显示初始值。

如何让自定义控件的工具提示始终显示自定义控件属性的当前值?

最佳答案

您需要使用绑定(bind)而不是使用 ToolTipService.SetToolTip 静态设置工具提示。在你的情况下应该是这样的:

SetBinding(ToolTipProperty, new Binding
{
Source = this,
Path = new PropertyPath("ControlStatus"),
StringFormat = "Status: {0}"
});

关于c# - 具有自定义控件属性值的 WPF 自定义控件的工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5371043/

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