2012-02-15 154 views
0

我正在尝试向组合框样式添加一个工具提示(以便它适用于整个应用程序中的所有组合框)。我想显示当前显示在组合框上的项目。在WPF中获取ComboBox显示文本

在一些情况下,组合框被绑定到复杂的实体(类)和该类的属性被设置为显示部件,例如:

<ComboBox ItemsSource="{Binding Path=SomeDataSource}" 
      DisplayMemberPath="PropertyName" /> 
在某些情况下

另外,我结合带有一个字符串列表的组合框,因此,我没有设置DisplayMemberPath。

有没有办法获得组合框当前显示的值?虽然我面临与ItemTemplate设置(这些项目模板有一个TextBlock与多个绑定中的组合框)的问题,但下面提出的解决方案工作得很好。

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

回答

1

试试这个:

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

您可能需要添加一个转换器时,Text属性是空的,以显示一个有用的工具提示。

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

+0

非常感谢! WorksForMe(TM)。 – 2012-02-15 14:46:27

+0

使用最新的测试,看起来好像显示的是SelectedValue而不是显示的文本。我反而希望显示的文本也作为工具提示显示。 – 2012-02-16 09:10:48

+0

我不确定我是否理解。如果你绑定到一个字符串列表,那么选定的值就是显示的文本。 – Phil 2012-02-16 09:29:53