我有一個綁定到ItemsSource的列表的Datagrid,SelectedItem綁定了此列表的單個對象。我的ViewModel實現INotifyPropertyChanged。防止DataGrid更新MVVM中的選定項目
綁定工作正常,除非有一個變量(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");
}
}
}
謝謝!
嘗試在if語句之外移動OnPropertyChanged,這應該會導致綁定刷新並重新選擇您期望的SelectedItem。然而,用戶可能看起來有點奇怪。 – ndonohoe 2014-11-14 16:09:19
我嘗試過,但仍然沒有成功。 – Natan 2014-11-14 16:13:48
嘗試將IsSynchronizedWithCurrentItem屬性設置爲true? http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.selector.issynchronizedwithcurrentitem(v=vs.110).aspx – ndonohoe 2014-11-14 16:23:05