【发布时间】:2015-01-12 01:29:26
【问题描述】:
我有一个 Datagrid,其中有一个绑定到 ItemsSource 的列表,并且 SelectedItem 绑定了这个列表的单个对象。我的 ViewModel 实现了 INotifyPropertyChanged。
绑定工作正常,除非有一个变量 (canSelectOtherObject = false) 阻止 myObject 更改它的值。即使 myObject 没有修改它的值,视图上的数据网格也会选择其他对象。我怎样才能防止这种情况发生?
查看:
<DataGrid ItemsSource="{Binding MyObjectList}" SelectedItem="{Binding MyObjectSelected, Mode=TwoWay}">
视图模型:
private ObservableCollection<MyObject> myObjectList;
private MyObject myObjectSelected;
private bool canSelectOtherObject;
public ObservableCollection<MyObject> MyObjectList
{
get { return myObjectList; }
set { myObjectList = value; }
}
public MyObject MyObjectSelected
{
get { return myObjectSelected; }
set
{
if(canSelectOtherObject)
{
myObjectSelected = value;
OnPropertyChanged("MyObjectSelected");
}
}
}
谢谢!
【问题讨论】:
-
尝试将 OnPropertyChanged 移到 if 语句之外,这应该会导致绑定刷新并重新选择您期望的 SelectedItem。然而,它对用户来说可能看起来有点奇怪。
-
我试过了,但还是没有成功。
-
尝试将 IsSynchronizedWithCurrentItem 属性设置为 true? msdn.microsoft.com/en-us/library/…
标签: c# wpf mvvm binding datagrid