C# 阻止DataGrid更新MVVM中的选定项
我有一个Datagrid,其中一个列表绑定到ItemsSource,SelectedItem绑定到此列表的单个对象。我的ViewModel实现INotifyPropertyChanged 绑定工作正常,除非有一个变量(canSelectOtherObject=false)阻止myObject更改其值。即使myObject不修改其值,视图上的datagrid也会选择其他对象。我怎样才能防止这种情况 视图:C# 阻止DataGrid更新MVVM中的选定项,c#,wpf,mvvm,binding,datagrid,C#,Wpf,Mvvm,Binding,Datagrid,我有一个Datagrid,其中一个列表绑定到ItemsSource,SelectedItem绑定到此列表的单个对象。我的ViewModel实现INotifyPropertyChanged 绑定工作正常,除非有一个变量(canSelectOtherObject=false)阻止myObject更改其值。即使myObject不修改其值,视图上的datagrid也会选择其他对象。我怎样才能防止这种情况 视图: 视图模型: private ObservableCollection<MyObje
视图模型:
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");
}
}
}
私有ObservableCollection MyObject列表;
选择私有MyObject MyObject;
私有布尔可以选择其他对象;
公共可观察收集对象列表
{
获取{返回myObjectList;}
设置{myObjectList=value;}
}
公共MyObject MyObjectSelected
{
获取{返回myObjectSelected;}
设置
{
如果(可以选择其他对象)
{
myObjectSelected=值;
OnPropertyChanged(“MyObject Selected”);
}
}
}
谢谢
INotifyPropertyChanged
用于在对象的属性更改时通知UI更新绑定,我认为您描述的是对象本身更改的情况
鉴于你的约束力:
这是更新所选麦克风的一个属性(需要
INotifyPropertyChanged
)与将SelectedItem
更改为另一个麦克风(无论是否通知,绑定都会更新)之间的区别。尝试将OnPropertyChanged移到if语句之外,这将导致绑定刷新并重新选择所需的SelectedItem。但是,用户可能会觉得有点奇怪。我尝试过,但仍然没有成功。是否尝试将IsSynchronizedWithCurrentItem属性设置为true?
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");
}
}
}