모든 발생했습니다. DB (및 데이터 모델)에는 Table2와 1 : 많은 관계가있는 Table1이 있습니다.첫째 예외는</p> <p>내가 데이터베이스 첫 번째 엔티티 프레임 워크 V4.4을 사용하고, PresentationFramework.dll
WPF의 DataGrid를 Table1.Local.First()에 바인딩합니다. Table2 (간단히하기 위해 Table1.Local에 엔티티가있는 것으로 가정).
는 뷰 모델 : 텍스트 상자로 일어나는 NewItemPlaceHolder 내부를 클릭하면 XAML에서
Public SomeEntityDBContextWithTable1AndTable2 Container { get; set; }
Public ICollection Table2ToDisplay { get { return Container.Table1.Local.First().Table2; } } //Note: :Many navigation properties return ICollection<T>, but the object type is of ObservableCollection<T>.
, 나는
<GroupBox Header=Table2 DataContext="{Binding Path=Table2ToDisplay, UpdateSourceTrigger=PropertyChanged}">
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" CanUserAddRows="True">
<DataGrid.Columns>
<!--A bunch of columns-->
</DataGrid.Columns>
</DataGrid>
</GroupBox>
다음, 나는이 PresentationFramework에서 System.InvalidOperationException에 발생하는 얻을. dll. 이것은 내 응용 프로그램을 손상시키지 않지만 출력에서 볼 수 있습니다. 내 생각 엔 엔티티가 다른 스레드에 추가되므로 CollectionChanged 이벤트가 다른 스레드에서 발생하므로 InvalidOperationException이 발생합니다. 그러나 코드는 주로 XML을 통해 수행되므로이 예외를 처리 할 방법을 찾지 못하고 있습니다 (또는 이미 처리 중이므로 출력으로보고되는 것입니다). EntityFramework에서 CanUserAddRows = "True"를 사용하는 안전한 방법이 있습니까? ": 많은"탐색 속성은 ObservableCollection 유형입니까?
필자는 TableViewToDisplay 속성을 CollectionViewSource 내에 배치하려고 시도했지만 여전히 출력에 InvalidOperationException이 표시된다는 것을 지적해야합니다.
미리 감사드립니다.