16

目前我有一个 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 包含一个值:

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

替换DescriptionToolTip我可以看到 ToolTip 的值出现在屏幕上。然而

ToolTip="{Binding Path=ToolTip}"

还是不行。如果我尝试按如下方式显示 ToolTip:

ToolTip="ToolTip" 

它只显示单词“工具提示”。

我怎样才能ToolTip显示一个值?

4

2 回答 2

37

如果 a ToolTipfor eachComboBoxItem是你想要的,你可以这样做:

<ComboBox.ItemContainerStyle>
    <Style>
        <Setter Property="Control.ToolTip" Value="{Binding ToolTip}" />
    </Style>
</ComboBox.ItemContainerStyle>
于 2012-06-29T09:51:36.480 回答
24

ToolTip="{Binding Path=ToolTip}"绑定到ToolTip当前组合框的属性DataContext(包含EnumDataItems属性的对象)。假设您要设置ToolTipComboBox当前选定项目的ToolTip属性值,这应该可以解决问题:

ToolTip="{Binding Path=SelectedItem.ToolTip, RelativeSource={RelativeSource Self}}"
于 2012-06-29T09:52:42.673 回答