MainWindow.xaml (View) 및 MainWindowViewModel.cs (ViewModel) 있습니다. 내 프로그램에서 시작시 비동기 로딩 데이터에 대한 사용자 정의 클래스가 Worklist.Result (observablecollection)입니다. 이 순간 나는 사용자 정의 필터링 데이터를 사용해야합니다. xaml에서 CollectionViewSource를 모두 만들면 완벽하게 표시되지만 CollectionViewSource에 Filter 이벤트를 바인딩 할 수 없습니다. 좋아, 그럼 내가 CollectionView 뒤에 코드가 필요해 ...하지만 마침내 DataGrid는 데이터를 표시하지 않는다. (바인딩 오류가 없다. CollectionViewSource는 모든 레코드를 가지고있다.) 왜? 예제 1 : (XAML로 만든 CollectionViewSource 필터링 제외) 모두 정상입니다!
MainWindow.xamlCollectionViewSource 코드 숨김 바인딩의 이상한 동작 MVVM
...
<xdg:DataGridCollectionViewSource x:Key="DataItems"
Source="{Binding WorkList.Result}"
<xdg:DataGridCollectionViewSource.GroupDescriptions>
<xdg:DataGridGroupDescription PropertyName="Date"/>
</xdg:DataGridCollectionViewSource.GroupDescriptions>
</xdg:DataGridCollectionViewSource>-->
...
<xdg:DataGridControl VerticalAlignment="Stretch" Background="White" ItemsSource="{Binding Source={StaticResource DataItems}}" ... </xdg:DataGridControl>
예 2 : (숨김 생성 필터링하여 w/o CollectionViewSource)를 데이터 그리드에서 NO RECORDS)!
MainWindow.xaml
<xdg:DataGridControl VerticalAlignment="Stretch" Background="White" ItemsSource="{Binding DataItems}" ... </xdg:DataGridControl>
MainWindowViewModel .cs
...
public ICollectionView DataItems { get; private set; }
...
private void WorkList_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
DataItems = CollectionViewSource.GetDefaultView(WorkList.Result);
}
그런 다음 WorkList_PropertyChanged 이벤트가 CollectionViewSource의 모든 데이터에 발생했지만 DataGrid에는 없습니다. 누군가이 문제를 도울 수 있습니까?
당신은 속성 DataItems을위한하여 PropertyChanged를 제기 했습니까? –
오! 나는 CollectionViewSource가 자동 RaisePropertyChanged (ObservableCollection처럼)를 구현한다고 생각한다. 실례합니다. – user1576474
물론 그렇긴하지만 DataItems 속성을 변경하면 해당 변경 사항을 알려야합니다. CVS는 어떤 속성을 지정했는지 알지 못하므로 -이 자체로 통지 할 수 없습니다 o) –