我有一個窗口與組合框。這個comboboxhas有5個ComboboxItems。修改SelectedItem不適用於MVVM
在這個例子中我想,這是無法選擇的項目3,4和5
我已經試過兩種不同的方式:MVVM方式和代碼隱藏方式
MVVM方式:
XAML:
<ComboBox SelectedIndex="{Binding Path=SaveIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding Path=SaveSelectedItemCheck}" Name="SaveCombobox">
視圖模型:
public object SaveSelectedItemCheck
{
get { return _control.SaveCombobox.Items[CurrentSaveIndex]; }
set
{
if (value != _control.SaveCombobox.Items[0] && value != _control.SaveCombobox.Items[1])
{
OnPropertyChanged("SaveSelectedItemCheck");
}
}
}
代碼隱藏方式:
XAML:
<ComboBox SelectedIndex="{Binding Path=SaveIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectionChanged="Save_SelectionChanged">
代碼隱藏:
private void Save_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox combobox = sender as ComboBox;
if(combobox == null)
{
return;
}
if (combobox.SelectedItem != combobox.Items[0] && combobox.SelectedItem != combobox.Items[1])
{
combobox.SelectedItem = combobox.Items[1];
e.Handled = true;
}
}
但它僅與代碼隱藏的方式,這是骯髒的工作。
爲什麼無法使用MVVM方式?
爲什麼你綁定selectedindex和selecteditem。只需使用SelectedItem。另一種方法是將你的itemssource綁定到一個CollectionView。 collectionView將包含所選屬性,因此您不必綁定到selecteditem – 2012-08-10 13:43:30