我有一個組合框,其中包含我的應用程序中定義的每個FilterViewModel的項目。每個FilterViewModel都有一個DisplayName屬性,其中包含過濾器的名稱。當前選擇的過濾器實例保存在SelectedFilter屬性中。更改組合框文本,但未選擇項目
我希望用戶能夠從下拉列表中選擇現有的項目,但也可以在文本框中更改所選過濾器的名稱。輸入其他名稱不得改變項目選擇。總是選擇一個過濾器,但不能選擇沒有過濾器。
這裏是XAML代碼:
<ComboBox
IsEditable="True" IsTextSearchEnabled="False"
ItemsSource="{Binding Filters}"
SelectedItem="{Binding SelectedFilter}"
DisplayMemberPath="DisplayName"/>
我找不到對ComboBox一個TextChanged事件,索性讓它原樣不改變所選項目的綁定文本屬性,顯示名稱(I」 d已經預料到了)。
我能做些什麼才能像上面描述的那樣工作?
背景是,此ComboBox用於我的應用程序的設置對話框中,可以管理(創建,複製,重命名,刪除)過濾器,並且可以編輯它們的過濾條件。我想省下額外的按鈕和窗口或TextBox來重命名過濾器,但直接就地提供該功能。您會看到過濾器名稱,只需點擊它並鍵入即可更改過濾器名稱。但我也想使用組合框有一個下拉選擇菜單來切換過濾器。
太好了!簡單有效的解決方案。這裏有一些代碼將選擇ComboBox中的所有文本。它可以連接SelectionChanged事件:http://stackoverflow.com/a/2151815/143684 – ygoe
非常感謝這一點。我在測試它的時候發現了一些東西,如果IsTextSearchEnabled爲true,SelectedFilter在更改DisplayName時將更改爲null,所以我在設置的分支上的屬性中添加了一個額外的檢查:if(value!= null) { _SelectedFilter =值; PropertyChanged(this,new PropertyChangedEventArgs(「SelectedFilter」)); }。現在它適用於我的場景,如果沒有您的示例,我無法到達這裏。 –