我将XamComboEditor(Infragistics XAM版本18.1)绑定到了我的视图模型:
<Editors:XamComboEditor
ItemsSource="{hw:Binding AvailableImports}"
SelectedItem="{hw:Binding Import}"
DisplayMemberPath="Name">
如果要应用特定条件,我想取消SelectedItem的值更改(绑定到ViewModel.Import):
public Import Import
{
get => _import;
set
{
if (value != _import)
{
if (NotEligible(value))
{
ShowNotEligibleMessage();
Dispatcher.BeginInvoke(DispatcherPriority.Normal, (Action)(() => SendPropertyChanged(nameof(Import))));
return;
}
_import = value;
SendPropertyChanged(nameof(Import));
}
}
}
问题:组合框仍会更改选择,并且不再与视图模型状态保持一致。即使使用此方法后,调度员处理的“属性已更改”通知也无法修复此行为(使用普通的Combobox实例而不是XamComboEditor时会发生此情况。)
我发现了this article,但是所描述的解决方案涉及使用我试图避免使用的代码。
还有其他解决方法吗?