说,我有一个带有以下声明的组合框:
<ComboBox x:Name="cbBaseClass"
ItemsSource="{Binding AvailableBaseClasses}"
SelectedItem="{Binding InheritGuid, Mode=TwoWay}"
Style="{DynamicResource ContentClassComboBox}" />
当用户改变价值时,在某些情况下,我问他,他是否真的想这样做。当他选择&#34; no&#34;时,我没有改变底层视图模型中的值。但无论如何,ComboBox中的值都会发生变化(尽管它现在与viewmodel不同步)。
ViewModel中的属性声明如下:
public ContentClassInfo InheritGuid {
get {
var info = //Get data
return info;
}
set
{
SetInheritGuid(value);
}
}
<小时/> 编辑: SetInheritGuid的来源:
private void SetInheritGuid(ContentClassInfo value)
{
// ...
// Irrelevant part
// ...
if (removedInheritedProps.Count > 0)
{
if (
editorDispatcher.Show(
"(...) Are you sure?",
button: MessageBoxButton.YesNo, icon: MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
// ...
// Prepare for change
// ...
}
else
{
OnPropertyChanged("InheritGuid");
return;
}
}
contentClass.InheritGuid.Value = value.ContentClass;
OnPropertyChanged("InheritGuid");
// ...
// Irrelevant
// ...
}
<小时/> 修改: Proof-of-concept application
如何防止ComboBox的值发生变化?