阻止DataGrid更新MVVM中的选定项

时间:2014-11-14 15:44:53

标签: c# wpf mvvm binding datagrid

我有一个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");
        }
    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

INotifyPropertyChanged用于在对象的属性发生更改时通知UI更新绑定,我认为您正在描述对象本身发生更改的情况。

鉴于你的约束力:

<DataGrid ItemsSource="{Binding MicrophoneList}" SelectedItem="{Binding MicrophoneSelected, Mode=TwoWay}">

更新所选麦克风的某个属性(需要INotifyPropertyChanged)和将SelectedItem更改为另一个麦克风之间的区别(无论是否通知,绑定都会更新) )。