2012-01-10 23 views
1

我有一個可編輯的ComboBox,其項目是一個類的實例:可編輯的WPF組合框文本的格式與下拉列表中的項目格式不同嗎?

class Foo 
{ 
    public int Something { get; } 
    public string Other { get; } 
    public override string ToString() { return Something + "/" + Other; } 
} 

這樣的項目顯示是這樣的:1/Example25/Etc等。

當用戶選擇一個項目時,我希望文本被設置爲Other屬性,但默認行爲是整個字符串被用作顯示。例如,如果用戶選擇1/Example,則可編輯文本應爲Example

實現我所追求的行爲的最佳方式是什麼?

回答

3

這應該工作:

<ComboBox TextSearch.TextPath="Other" IsEditable="True" Height="50" ItemsSource="{Binding FooItems}"/> 
+0

所以它確實如此,雖然「其他」顯然不可能是一個領域。順便說一下,你是通過在線搜索還是通過閱讀有關內容,或者通過使用某種工具檢查ComboBox來發現它的? (強烈懷疑前者,但你永遠不知道......) – 2012-01-10 21:48:10

1

調查設置ComboBox.ItemTemplate。這是控件將用於顯示項目的DataTemplate。您可以使用它來完全控制Foo的顯示方式。

這將是一個非常有用的技能,因爲有許多任務,你通過修改數據模板和控制模板在WPF中完成。

+0

我會檢查出來。它肯定不會影響用戶選擇時Foo如何轉換爲文本? – 2012-01-10 13:24:25

+0

這是WPF工具集中的一個基本工具,因此您一定要考慮它。你基本上正在創建一個新的可視化樹來顯示特定類型的實例(在這種情況下爲'Foo')。 – 2012-01-10 13:32:33

+0

當IsEditable等於false時,ComboBox使用ContentPresenter顯示當前選定的項目;當IsEditable等於true時,TextBox將用於此目的。請注意,文本框只顯示純文本,並且ComboBoxItem可能包含非純文本內容,如圖像。 – 2016-04-01 17:40:33

相關問題