WPF-ListBox nicht aktualisiert mit den ItemsSource
Habe ich, was ich glauben sollte einfach zwei-Wege-Datenbindung in WPF-setup, aber die listbox (Ziel) wird nicht aktualisiert, da die Sammlung sich ändert.
Ich werde diese ItemsSource der ListBox programmatisch:
lstVariable_Selected.ItemsSource = m_VariableList;
Und die ListBox ist wie folgt deklariert:
<ListBox Margin="5" Name="lstVariable_Selected">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1" Margin="0">
<TextBlock FontSize="25" Text="{Binding Path=Name}" />
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Wenn ich zunächst die ItemsSource der ListBox (die nicht sichtbar ist an der Zeit) bekommt seine items. Jedoch, wenn ich nach Ansicht der ListBox, updates scheinen zu stoppen an diesem Punkt.
Kann ich das dann entfernen Sie ein Element aus der m_VariableList Sammlung, und es verschwindet nicht aus der ListBox. Ebenso, wenn ich hinzufügen, es erscheint nicht.
Was gibt?
Bitte poste den code, die Sie verwenden, um zu binden ItemSource an m_VariableList.
InformationsquelleAutor Paul Prewett | 2009-06-16
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist Ihre m_VariableList Umsetzung INotifyCollectionChanged? Wenn es nicht eine ObservableCollection, dann ändert es seinen Inhalt nicht automatisch in der Benutzeroberfläche übernommen.
Wenn es IBindingList implementiert, dann wird es funktionieren, genau das gleiche. Es gibt etwas anderes, dass nicht offensichtlich aus dem, was Sie beschrieben haben, wie das funktionieren wird.
Stellt sich heraus, dass die zugrunde liegende Implementierung geändert hatte (unbemerkt von mir) und es war nicht mehr die Implementierung von IBindingList, wenn ich dachte, dass es war. Moral: Überprüfen Sie Ihre (meine) Vermutungen.
InformationsquelleAutor rmoore
Ist das problem nicht in der XAML-Code, der Sie zur Verfügung gestellt haben. Ich habe den gleichen XAML erfolgreich in einem test-Anwendung; jedoch, ich war in der Lage zu replizieren, das Problem, das Sie erleben, sind durch die re-instanziieren der m_VariableList variable.
Wenn die m_VariableList ist eine neue Instanz, oder wies auf ein neues Objekt, es spiegelt sich nicht in der ListBox, da das Steuerelement hat seine eigene Referenz auf die Daten. Dies ist möglicherweise nicht die Ursache für dein problem, aber ich würde empfehlen, sich über Ihre code-behind-um sicherzustellen, dass die Variablen nicht immer neu instanziert.
InformationsquelleAutor Tony Borres