1
我有一個組合框和xaml中硬編碼的comboboxitems,我嘗試基於字符串值以編程方式設置組合框的值。根據內容將ComBox設置爲ComboBoxItem
XAML:即不使用ComboBoxItems的時候我通常會使用
<ComboBox Name="comboCondition">
<ComboBoxItem>Item 1</ComboBoxItem>
<ComboBoxItem>Item 2</ComboBoxItem
</ComboBox>
代碼:
comboConditionValue.SelectedItem = "Item 1";
當然,當組合框包含ComboBoxItems而不是被綁定到一個列表,這並不工作。我能夠找到正確的值是這樣的:
foreach (var item in comboCondition.Items)
{
if ((item as ComboBoxItem).Content.ToString() == "Item 1")
comboCondition.SelectedItem = item;
}
這是設置值的混亂和緩慢的方式,沒有人知道任何更簡單的方法,我可以設置正確的ComboBoxItem無需經過完整列表循環?
'comboCondition.Items.IndexOf(「Item 1」)''null'(是「Item 1」存在於Items集合中。我認爲IndexOf會期望ComboBoxItem類型的對象,而不是字符串。我不得不承認我對ViewModel並不熟悉,並且寧願避免爲了這個小問題而實現一個,但我會做一些閱讀,看看這個實現的優點是什麼。如果你刪除或編輯第二個解決方案,我可以接受你的答案 – Scotty
我剛剛學會了如何在我現有的類上實現'INotifyPropertyChanged',所以我已經以這種方式實現了你的第一個建議......第二個建議不起作用 – Scotty
啊是的,你對第二種選擇是正確的。我沒有完全檢查代碼,忽略了記住所需的對象。我想你可以使用類似於:comboCondition.Items.IndexOf(comboCondition.Items.FirstOrDefault(c => c.Text ==「Item 1」)),其中Text是保存顯示值的屬性。但是我很高興你能夠使用視圖模型,也就是到目前爲止,使用WPF時的首選方法。 – JasonWilczak