Zdravím, potýkám se s následujícím problémem. V okně mám definován datový zdroj a kolekci dat, která je bindována na DataGrid... <Window.Resources> <ResourceDictionary> <Data:IssueRecords x:Key="DataSource"/> <CollectionViewSource x:Key="DataCollection" Source="{StaticResource DataSource}" Filter="CollectionViewSource_Filter"> </CollectionViewSource> </ResourceDictionary> </Window.Resources> Všimněte si, že k té kolekci je přilepen event handler pro filtr dat. Po otevření okna vše funguje, jak má. Když si zadám filtr, hezky mi to vrátí jen ty záznamy, definované v kritériích. Problém nastane poté, co změním nějaký záznam a zavolám Insert, Update, nebo Delete do databáze. Pak totiž volám dvě metody, ve kterých nejprve aktualizuji datové zdroje a kolekce dat... private void ReloadDataSources() { var dataSource = this.FindResource("DataSource") as IStockRecords; dataSource.ReloadData(); var dataCollection = this.FindResource("DataCollection") as CollectionViewSource; dataCollection = new CollectionViewSource() { Source = dataSource }; dataCollection.Filter += new FilterEventHandler(CollectionViewSource_Filter); Binding binding = new Binding() { Source = dataCollection }; BindingOperations.SetBinding(GridData, DataGrid.ItemsSourceProperty, binding); } a pak volám Refresh na ten DataGrid... private void ReloadGrid(object sender, RoutedEventArgs e) { CollectionViewSource.GetDefaultView(GridData.ItemsSource).Refresh(); } Tím, že přestavím CollectionViewSource, mi přestane fungovat filtr. Metoda CollectionViewSource_Filter se přestane při refreshi gridu volat, a to i přesto, že jsem k té kolekci přidal ten event handler. Co dělám špatně? Díky za případný help, JiKra
|