如何使ToolTip绑定与ComboBox一起工作?

19

目前我有一个ComboBox定义如下:

<ComboBox Name="comboItems" ItemsSource="{Binding Path=EnumDataItems}"
            DisplayMemberPath="Description" 
            ToolTip="{Binding Path=ToolTip}" // never displays the value
            SelectedValuePath="Value" SelectedValue="{Binding Path=Value}" />

除了ToolTip之外,一切正常。 它应该绑定的属性是ToolTip确实包含一个值。 我确定这一点,因为当我执行以下操作时,我会看到结果确认ToolTip包含一个值:

<ComboBox Name="comboItems" ItemsSource="{Binding Path=EnumDataItems}" 
            DisplayMemberPath="ToolTip" // I replaced 'Description' with 'ToolTip'
            ToolTip="{Binding Path=ToolTip}"
            SelectedValuePath="Value" SelectedValue="{Binding Path=Value}"/>

在我用ToolTip替换了Description之后,我可以看到ToolTip的值出现在屏幕上。但是

ToolTip="{Binding Path=ToolTip}"

仍然不起作用。如果我尝试像下面这样显示ToolTip:

ToolTip="ToolTip" 

它只显示单词“ToolTip”。

我该如何使ToolTip 显示一个值?

2个回答

39

如果你想要为每个ComboBoxItem添加一个ToolTip,你可以这样做:

<ComboBox.ItemContainerStyle>
    <Style>
        <Setter Property="Control.ToolTip" Value="{Binding ToolTip}" />
    </Style>
</ComboBox.ItemContainerStyle>

非常感谢您提供的信息 - 这是我接下来要进行的步骤。虽然其他答案回答了所问的问题,我已经接受其为正确答案,但我发现这个非常有用,所以再次感谢您。 - binncheol
这就是我一直在寻找的。非常简单有效。我看到了这个可怕的样本,知道肯定有更简单的方法。http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/52ee62b4-41b6-44c1-8d2d-0243162266ef/ - Alexandru Dicu

27

ToolTip="{Binding Path=ToolTip}"绑定到当前组合框DataContext(包含EnumDataItems属性的对象)的ToolTip属性。 假设您希望将ComboBoxToolTip设置为当前所选项目的ToolTip属性值,则应该使用以下代码来解决问题:

ToolTip="{Binding Path=SelectedItem.ToolTip, RelativeSource={RelativeSource Self}}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接