如何根据选定的值设置WPF ComboBox的工具提示?

时间:2013-03-05 23:42:10

标签: wpf combobox triggers tooltip selectedvalue

我的WPF应用程序中有ComboBox。使用下面的代码,我可以将ToolTip设置为选定值:

ToolTip="{Binding Path=SelectedValue, RelativeSource={RelativeSource Self}}" 

但是,如果我需要根据ToolTip选项为ComboBox设置单独的值,则以下代码无效:

<controls:ComboBoxEx.Style>
    <Style TargetType="ComboBox" BasedOn="{StaticResource basicStyle}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=SelectedValue, RelativeSource={RelativeSource Self}}" Value="DAW">
                <Setter Property="ToolTip" Value="abc"/>
            </DataTrigger>

            <DataTrigger Binding="{Binding Path=SelectedValue, RelativeSource={RelativeSource Self}}" Value="generic">
                <Setter Property="ToolTip" Value="def"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</controls:ComboBoxEx.Style>

2 个答案:

答案 0 :(得分:6)

我不确定我是否理解正确,但如果您使用Style,则不必使用DataTriggerRelativeSource={RelativeSource Self}}"来访问SelectedValue,您应该可以使用Trigger

通过Property进行访问
<Style TargetType="ComboBox">
    <Style.Triggers>
        <Trigger Property="SelectedValue"  Value="DAW">
            <Setter Property="ToolTip" Value="abc"/>
        </Trigger>
        <Trigger Property="SelectedValue" Value="generic">
            <Setter Property="ToolTip" Value="def"/>
        </Trigger>
    </Style.Triggers>
</Style>

答案 1 :(得分:2)

将工具提示绑定到所选项目的显示属性,在这种情况下,我有属性名称显示,如果你有声明性的ComboBox项目,那么

ToolTip="{Binding Path=SelectedItem.Content,ElementName=cmbbox_years}"

否则代码下面的自定义对象将起作用

<ComboBox 
  Name="cmbbox_years" 
  DisplayMemberPath="display" 
  SelectedValuePath="value"
  ItemsSource="{Binding Years}" 
  SelectedItem="{Binding YearSelectedItem}" 
  ToolTip="{Binding Path=SelectedItem.display,ElementName=cmbbox_years}"/>