2014-09-09 4 views
0

Я смотрел разницу между BindingList и наблюдаемым коллекцией и списком. Из того, что я прочитал, похоже, что BindingList является единственным типом коллекции, который будет уведомлять, изменил ли один из его объектов один из его свойств. Я не могу заставить это работать.Обновление datagrid с BindingList

У меня есть свойство в ViewModel под названием Matches, которое возвращает BindingList, созданный из списка объектов CarMatch в другом классе. (Cars m_Cars = new Cars();) My DataGrid в представлении привязан к этому свойству Match в VM.

public BindingList<CarMatch> Matches 
{ 
    get 
    { 
     Return new BindingList<CarMatch>(m_Cars.Matches); 
    } 
} 

Теперь в коде меняю один из свойств объекта CarMatch, скажем .. automaticTrans = истинное от ложного. Соответствует [0] .automaticTrans = true. Я хочу увидеть это изменение в DataGrid. Не внедряя INotifyPropertyChanged внутри класса CarMatch, есть ли способ обновить datagrid из viewmodel? Использование INotifyPropertyChanged on Match не похоже на это. В этом есть что-то, что я просто не понимаю, и мог бы использовать пример, на который нужно смотреть.

ответ

0

CarMatch (не Matches) должен реализовать INotifyPropertyChanged. Но подумайте об использовании ObservableCollection, если вам действительно не нужны некоторые дополнительные сценарии, предлагаемые BindingList: с ObservableCollection, INotifyPropertyChanged предоставляется бесплатно. И, что более важно, BindingList doesn't scale well.

+0

ОК, я думал, что у BindingList были некоторые другие функции, которые позволяли ему обновлять его элементы, если их свойства изменились без INotifyPropertyChanged в классе объекта списка. –

-1

попробовать

dataGrid.Items.Refresh(); 

, но имейте в виду, что является дорогой звонок, если у вас есть много данных, и вы называете это несколько раз в течение короткого периода времени.

Смежные вопросы