CollectionViewSource.Filter po reloadu zdrojů nefunguje   otázka

C#, WPF

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

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback