【问题标题】:How to set the ToolTip of WPF ComboBox based on selected value?如何根据选定的值设置 WPF ComboBox 的 ToolTip?
【发布时间】:2013-03-05 23:42:10
【问题描述】:

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

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

但如果我需要根据ComboBox 选择为ToolTip 设置单独的值,则以下代码不起作用:

<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>

【问题讨论】:

  • 您的 ComboBox 绑定到什么?字符串列表?出于兴趣,请尝试使用 SelectedItem 而不是 SelectedValue。
  • 我都试过了 :(

标签: wpf combobox triggers tooltip selectedvalue


【解决方案1】:

我不确定我的理解是否正确,但如果您使用的是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>

【讨论】:

  • 我试过这个......但不工作......如果我将以下设置器作为默认设置 ..当我选择它们时,它会为我提供正确的值 DAW 和通用值......但在 内部它不起作用。
  • 您的ComboBox 上设置了SelectedvaluePath
  • 组合框中的数据类型是什么,您能否发布您的 ComboBox xaml,以及您的集合示例。
  • 感谢您的帮助...我已经想通了...而不是使用具有选定值的数据触发器...我将数据触发器与原始模型对象一起使用...现在它工作正常。谢谢
【解决方案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}"/>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2014-11-11
  • 1970-01-01
  • 2017-09-19
相关资源
最近更新 更多