| 

.NET C# Java Javascript Exception

1
Beim Binden eines WPF 4 DataGrid an eine ObservableCollection werden Aktualisierungen der Datenquelle nicht im DataGrid angezeigt.

View:
<DataGrid DockPanel.Dock="Top" Margin="5" ItemsSource="{Binding ArtikelRows}" AutoGenerateColumns="False" Height="550">
<DataGrid.Columns>
<DataGridTextColumn Header="Artikelnummer" Binding="{Binding Nummer}" Width="Auto" />
<DataGridTextColumn Header="Beschreibung1" Binding="{Binding Beschreibung1}" Width="Auto" />

Viewmodel ctor (fliegt, wenn Filterung funzt natülrich aus ctor wieder raus :-):
var ctx = new EntitiesDataContext(_session.ConnectionStringReporting);
IQueryable<Artikel> tbl = ctx.GetTable<Artikel>();
ArtikelRows = new ObservableCollection<Artikel>(tbl);

Das hier geht nicht: Command, das Daten neu filtern soll:
var ctx = new EntitiesDataContext(_session.ConnectionStringReporting);
IQueryable<Artikel> tbl;
if(artikelNummer=="*")
{
tbl = ctx.GetTable<Artikel>();
}
else
{
tbl = ctx.GetTable<Artikel>().Where(x => x.Nummer.StartsWith(artikelNummer));
}
//Filtering data in mem is not an option
//ArtikelRows = new ListCollectionView(new ObservableCollection<Artikel>(tbl));
ArtikelRows = new ObservableCollection<Artikel>(tbl);

Das Command wird korrekt ausgelöst und ich sehe im Unit Test auch nur die gewünschte Anzahl gefilterter Daten, aber das DataGrid wird nicht aktualisiert.
22.04.2011
Dodnedder 11 1
2 Antworten
1
Setz im DataGrid folgendes Attribut: IsSynchronizedWithCurrentItem="True" dann sollte das DataGrid mitbekommen wenn sich die Datenquelle ändert.
22.04.2011
schulz3000 330 1 5
0
Danke für deine Hilfe, aber ich hab mich einfach zu doof angestellt: Es hat schlicht das INotifyPropertyChanged gefehlt.
22.04.2011
Dodnedder 11 1
1
Damit gehts auch. Da die ObservableCollection das INotifyPropertyChanged Interface aber schon implementiert muss man es nicht nochmal explizit aufrufen sondern es würde halt ausreichen das IsSynchronizedWithCurrentItem Attribut auf true zu setzen.
schulz3000 22.04.2011
IsSynchronizedWithCurrentItem hat nicht gereicht. Ich musste tatsächlich noch INotifyPropertyChanged auf die Property die schon ObservableCollection typisiert war verwenden ?-(
Dodnedder 22.04.2011

Stelle deine .net-Frage jetzt!