2012-02-15 139 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