2014-09-09 2 views
0

BindingList와 observablecollection 및 List의 차이점을 살펴 보았습니다. 내가 읽은 바로는 BindingList가 그 중 하나의 속성이 변경된 경우이를 알리는 유일한 컬렉션 유형 인 것 같습니다. 나는 이것을 작동시킬 수 없다.BindingList로 DataGrid 업데이트

다른 클래스의 CarMatch 개체 목록에서 만든 BindingList를 반환하는 Matches라는 ViewModel에 속성이 있습니다. (Cars m_Cars = new Cars();) 뷰의 내 DataGrid가 VM의이 Matches 속성에 바인딩됩니다.

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

지금, 코드에서 나는 CarMatch 객체의 속성 중 하나를 변경할 말하자면 .. 거짓에서 참 automaticTrans =. 일치 [0] .automaticTrans = true. 나는 DataGrid에서 그 변화를보고 싶다. CarMatch 클래스 내부에서 INotifyPropertyChanged를 구현하지 않으면 viewmodel에서 DataGrid를 업데이트 할 수 있습니까? Matches에서 INotifyPropertyChanged를 사용하는 것으로 보이지 않습니다. 이것에 관해 나는 이해하지 못하고,보기에보기를 사용할 수 있습니다.

답변

0

CarMatch (Matches)은 INotifyPropertyChanged을 구현해야합니다. BindingList에서 제공하는 추가 시나리오가 실제로 필요하지 않으면 ObservableCollection을 사용하는 것이 좋습니다. ObservableCollection으로 INotifyPropertyChanged이 무료로 제공됩니다. 더 중요한 것은 BindingList doesn't scale well입니다.

+0

OK, BindingList는 목록 개체 클래스에서 INotifyPropertyChanged없이 속성이 변경된 경우 BindingList에 항목을 업데이트 할 수있는 다른 기능이 있다고 생각했습니다. –

-1

dataGrid.Items.Refresh(); 

을 시도하지만 많은 데이터가있는 경우 고가의 전화입니다 명심 당신은 시간의 짧은 기간에 여러 번 호출합니다.