我有一個組合框,其內容可能會更改。問題在於內容改變時,1)我失去了之前的selectedIndex,並且2)SelectedIndex被設置爲-1。 我想要一個MVVM解決方案,而不是一些涉及代碼隱藏的解決方案。 我可以在內容更改時將SelectedIndex設置爲0,但-1對於我的模型不是有效的值。組合框SelectedIndex在內容更改上丟失
我作爲一個'技巧'所做的事情是將屬性的setter綁定到SelectedIndex,以將值設置爲-1時將值設置爲-1。所以現在我沒有在我的模型中有不正確的值。但ComboBox不顯示「0」項,而是一個空框。
當我的組合框的內容發生變化時,我的組合框會顯示第一個項目(索引0)嗎?
<ComboBox Name="WeeksComboBox" IsEditable="False"
ItemsSource="{Binding Weeks}"
SelectedIndex="{Binding WeekNumber}"
>
周是一個通知屬性是一個字符串列表。當我更改Year屬性時,它會發生變化。 WeekNumber是整數類型的通知屬性。現在,當它設置爲-1時,我將相應的私有成員設置爲0,以避免在我的模型中出現錯誤的值。
我懷疑您正在重新綁定,因爲它會將選定索引設置爲-1。請將代碼粘貼到您綁定的位置以及更改內容的位置。 – Paparazzi 2012-02-21 15:54:56
當你說「它改變了,我改變了一年」,你是否清除這個列表 - 如果是這樣,當它被設置爲-1,因爲沒有值(直到你添加新的值)。如果你正在做一個清晰的,然後添加你將需要設置WeekNumber = 0後添加(我會設置公共而不是私人)。我會在列表中使用ObservavleCollection。 – Paparazzi 2012-02-21 16:14:10
使用ObservableCollection將自動通知其項目更改(添加,移動,刪除)。此外,如果您替換當前選定的項目,則舊的參考將丟失,因此索引將爲-1。您可以使用小型ViewModel來表示WeekNumber,如果項目值發生更改,則更改爲內部編號並通知它。 – JoanComasFdz 2012-03-28 10:55:44