【问题标题】:Get ComboBox displayed text in WPF在 WPF 中获取 ComboBox 显示的文本
【发布时间】:2012-02-15 13:52:39
【问题描述】:

我正在尝试将工具提示添加到组合框的样式中(以便它适用于整个应用程序中的所有组合)。我想显示组合框中当前显示的项目。

在某些情况下,组合框绑定到复杂实体(类),并且该类的属性设置为显示成员,例如:

<ComboBox ItemsSource="{Binding Path=SomeDataSource}"
          DisplayMemberPath="PropertyName" />

另外,在某些情况下,我将组合框与字符串列表绑定,因此,我没有设置 DisplayMemberPath。

有没有办法获取组合框当前显示的值?

编辑:下面提出的解决方案工作得很好,尽管我遇到了带有 ItemTemplate 集的组合框的问题(这些项目模板有一个 TextBlock,其中包含多重绑定)。

带有 ItemTemplate 的组合框没有 DisplayMemberPath,因此组合框的“文本”属性返回 SelectedValue。

【问题讨论】:

    标签: wpf combobox tooltip


    【解决方案1】:

    试试这个:

    <Style TargetType="{x:Type ComboBox}">
        <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=Text}"/>
    </Style>
    

    您可能希望添加一个转换器,以便在 Text 属性为空时显示有用的工具提示。

    为了使样式适用于所有组合框,请将其放入 App.xaml 中。

    【讨论】:

    • 非常感谢! WorksForMe (TM)。
    • 通过最新的测试,似乎它显示的是 SelectedValue 而不是显示的文本。相反,我希望显示的文本也显示为工具提示。
    • 我不确定我是否理解。如果您要绑定到字符串列表,那么选定的值就是显示的文本。
    • 对于字符串列表,没问题。当我与复杂的类实体绑定时不起作用。例如,假设我将它与 UserCountry 类绑定,那么 DisplayMemberPath 可能是 CountryName,但 SelectedValuePath 是 CountryCode。我希望在工具提示中显示来自 DisplayMember 的文本。
    • 在设置 DisplayMemberPath 和使用复杂实体时它适用于我。你是什​​么意思'它显示了 SelectedValue'?
    猜你喜欢
    • 2011-10-13
    • 2013-07-11
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多