WPF中的动态工具提示

本文关键字:工具提示 动态 WPF | 更新日期: 2023-09-27 18:01:57

我刚接触WPF几天,有点搞清楚一些东西。我已经实现了一个选项卡,现在我需要动态地填充文件名的工具提示。选项卡标题应该只显示文件名,而工具提示应该显示整个文件路径。我该怎么做呢?代码如下:

<!-- XAML -->
<Label Content="TabItem"  Height="23" HorizontalAlignment="Left"
       Margin="4,1,0,0" Name="TabTitle" VerticalAlignment="Top"
       FontFamily="Courier" FontSize="12" ToolTip="Dynamic FilePath"/>
public string Title
{
    set
    {
        ((CloseableHeader)this.Header).TabTitle.Content = ExtractFileName(value);
    }
}

WPF中的动态工具提示

你说你想要一个标签上的工具提示,但你的XAML是一个标签,所以我就使用它。请在下方留言,说明你在做什么。

因为你只是在使用隐藏代码,所以给标签起一个名字:

<Label Content="TabItem"  Height="23" HorizontalAlignment="Left"
       Margin="4,1,0,0" Name="TabTitle" VerticalAlignment="Top"
       FontFamily="Courier" FontSize="12" ToolTip="Dynamic FilePath"
       Name="MyLabel" />

然后在代码后面设置工具提示:

MyLabel.ToolTip = Title;  // or whatever you want to display

注:

WPF的优点之一是内置的高级数据绑定。您应该研究MVVM模式,它允许您将逻辑(在ViewModel中)与布局(在XAML中)分离。

然后你可以在你的ViewModel中有一个属性,比如"Title",将你的视图绑定到ViewModel,然后设置工具提示,比如:

<Label ToolTip={Binding Path=Title} ... />

你可以新建一个控件,然后将工具提示设置为这个newcontrol

    var but = new Button();         
    // old code 
    but.ToolTip = "some string";
    // new code with font that can be controlled 
    var toolTipTextBox = new TextBox();
    toolTipTextBox.Text = "some string";
    toolTipTextBox.FontSize = 24;
    but.ToolTip = toolTipTextBox;