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

时间:2015-07-09 15:51:22

标签: c# wpf xaml binding tooltip

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

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,但对于工具提示,它类似于:

Tool tip shows type name

2 个答案:

答案 0 :(得分:0)

它应该以这种方式工作(考虑是否需要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; }
    }

}

答案 1 :(得分:0)

不完全确定这是否是可接受的答案,但您通常应该使用XAML中的绑定,如下所示:

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

然后在C#代码中创建两个属性,即使用INotifyPropertyChanged接口功能。

你可以有理由不这样做