2011-04-07 3 views
4

wpf가 ObservableCollection에서 구현하는 INotifyCollectionChanged 인터페이스를 사용하는 경우 DataGrid 및 목록 상자의 자동 업데이트 (즉, 새 항목 추가 및 제거)를 지원하는 방식을 이해합니다. 그러나 어떤 이유로 나는 완전한 성공을 바인딩 을 구현하지 않는 EntityFramework에서 EntityCollection<T>에 바인딩하는 것 같습니다. WPF가이 작업을 수행하는 다른 방법이 있습니까?바인드 WPF DataGrid를 직접 EntityCollection에 바인딩 <T>

나는 이것이 어떻게 작동하는지 알고 싶습니다.

편집

여기에 대한 대답에서 관련 부분입니다. 짧은 형식은 WPF 및 WinForms 바인딩으로 "그냥 작동합니다"입니다.

EntityCollection는 현재 수집 변화를 알리는 "새로운"표준 인터페이스 입니다 INotifyCollectionChanged, 를 구현하지 않습니다. 그러나, (데이터 소스로 전달하고 EntityCollection 때 데이터 바인딩은 일반적으로 을 얻을 것이다 ) 당신이 EntityCollection에 대해 얻을 수있는 바인딩 목록의 통지의 자신의 "오래된"표준 방법 이있는 IBindingList 입니다 컬렉션 변경 (즉, ListChanged 이벤트) . 일반적으로 WinForms 및 WPF 데이터 바인딩 은이 인터페이스를 처리하는 방법을 알고 있습니다.

답변

2

분명히 여기에 bug filed이 있었지만 "설계 상"으로 (적어도 .NET 4에서는) 닫히지 않았습니다.

this post에 설명되어 있듯이 EntityCollection은 IBindingList를 사용하는 "이전"또는 WinForms 방식의 목록 변경 알림을 효과적으로 사용합니다. WPF는 "새로운"INotifyCollectionChanged 인터페이스를 사용합니다.

blog post은 ItemsSource 속성에 할당 할 수있는 사용자 지정 ListCollectionView로 EntityCollection을 래핑하는 좋은 방법을 설명합니다.

+0

귀하의 링크는 내게 답변을 주었지만 잘못된 부분을 인용했습니다. :) 그럼에도 불구하고 +1. 고맙습니다. –

+0

위의 Diego B Vega의 'this post'에서 EntityCollection 에 대해 얻을 수있는 바인딩 목록 (일반적으로 전달할 데이터 바인딩 및 데이터 소스로 EntityCollection )은 IBindingList ...입니다. EntityCollection 및 해당 바인딩 목록은 항상 삭제 및 추가 모두에 대해 두 가지 방법으로 동기화됩니다. " – Kimberly

+0

@Kimberly, 예, 감사합니다. 감사! –

2

당신은 WPF Application Framework (WAF)BookLibrary 샘플 응용 프로그램에서 찾을 수 있습니다 EntityObservableCollection 살펴있을 수 있습니다. 이렇게하면 WPF 바인딩이 모든 업데이트를 인식합니다.

관련 문제