我有一个Datagrid,其列表绑定到ItemsSource,SelectedItem绑定到此列表的单个对象。我的ViewModel实现了INotifyPropertyChanged。
绑定工作正常,除非有一个变量(canSelectOtherObject = false)阻止myObject更改它的值。即使myObject没有修改它的值,View上的datagrid也会选择其他对象。我该如何防止这种情况?
查看:
<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");
}
}
}
谢谢!
答案 0 :(得分:0)
INotifyPropertyChanged
用于在对象的属性发生更改时通知UI更新绑定,我认为您正在描述对象本身发生更改的情况。
鉴于你的约束力:
<DataGrid ItemsSource="{Binding MicrophoneList}" SelectedItem="{Binding MicrophoneSelected, Mode=TwoWay}">
更新所选麦克风的某个属性(需要INotifyPropertyChanged
)和将SelectedItem
更改为另一个麦克风之间的区别(无论是否通知,绑定都会更新) )。