繁体   English   中英

为什么工具提示会显示控件类型?

[英]Why the tool tip shows the control type?

我正在尝试在工具提示中显示一些文本。 我在互联网上搜索了一些解决方案,但是它不起作用:

XAML:

<TextBlock x:Name="ResultText">
  <TextBlock.ToolTip>
    <TextBlock x:Name="ResultToolTip" />
  </TextBlock.ToolTip>
</TextBlock>

码:

BindingOperations.SetBinding(ResultText, TextBlock.TextProperty, new Binding("MyPath")
{
  Source = myObject,
  StringFormat = "MyFormat"
});

BindingOperations.SetBinding(ResultToolTip, TextBlock.TextProperty, new Binding("MyPath")
{
  Source = myObject,
  StringFormat = "MyFormat"
});

这种方法适用于普通的TextBlock ,但对于工具提示,它就像:

工具提示显示类型名称

它应该以这种方式工作(考虑是否需要MyPath更改通知, MyObject类应该继承自INotifyPropertyChanged接口)

public partial class MainWindow : Window
{ 
    public MainWindow()
    {
        InitializeComponent();

        MyObject myObject = new MyObject { MyPath = "value" };

        BindingOperations.SetBinding(ResultText, TextBlock.TextProperty, new Binding("MyPath")
        {
        Source = myObject,
        StringFormat = "MyFormat"
        });

        BindingOperations.SetBinding(ResultToolTip, TextBlock.TextProperty, new Binding("MyPath")
        {
        Source = myObject,
        StringFormat = "MyFormat"
        });
    }

}

class MyObject
{
    private string _myPath;

    public string MyPath
    {
        get { return _myPath; }
        set { _myPath = value; }
    }

}

不能完全确定这是否是一个可接受的答案,但通常应使用来自XAML的绑定,如下所示:

<TextBlock x:Name="ResultText" Text="{Binding Source=TextBlockText}">
        <TextBlock.ToolTip>
            <TextBlock x:Name="ResultToolTip" Text="{Binding Source=TooltipText}"/>
        </TextBlock.ToolTip>
</TextBlock>

然后只需在C#代码中创建两个属性,即可使用INotifyPropertyChanged接口函数。

您可能有理由不这样做

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM