ListBox nicht aktualisieren, nachdem die Eigenschaft geändert
Ich versuche, zu binden zwei ListBox
es:
<ListBox SelectionChanged="lbApplications_SelectionChanged"
ItemsSource="{Binding Path=Applications,
UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" />
<ListBox DisplayMemberPath="Message"
ItemsSource="{Binding Path=Events,
UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" />
Applications
und Events
sind öffentliche Eigenschaften in Window
Klasse.
Ich DataContext
zu this
beiden Listenfelder und implementieren INotifyPropertyChanged
im Window
Klasse:
private void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
Und dann nach dem hinzufügen von neuen Elements zu Applications
oder Events
ich nennen:
NotifyPropertyChanged("Events");
NotifyPropertyChanged("Applications");
Das Problem ist, dass ListBox
geladen, nur ein einziges mal. Was mache ich falsch?
InformationsquelleAutor Jan Remunda | 2009-07-14
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Betrachten wir nun eine der Listboxen, da Sie beide die gleiche, im Grunde.
Den code, den wir besorgt sind, ist dieses:
Da Sie neue WPF, lassen Sie mich sagen, Sie wahrscheinlich nicht brauchen
UpdateSourceTrigger
oderMode
in es, und das lässt uns mit diesem:Du hast erwähnt, dass Anwendungen ist eine öffentliche Eigenschaft in der code-behind. Sie benötigen, um eine
DependencyProperty
, und Sie brauchen Sie, um Ereignisse auszulösen, wenn Sie sich ändert-die meisten Leute benutzen ein ObservableCollection für diese.Damit Ihre code-behind-etwas wie dies:
Dann, wo Sie es hinzufügen möchten, werden Sie etwas wie das hier tun:
Schließlich für die "einfachen" Bindung-syntax zu arbeiten, die in XAML, die ich in der Regel ändern die
DataContext
in mein Fenster (oder das root-Control-element für die Datei, was auch immer ich bin arbeiten) zuIhre Anwendungen-box automatisch aktualisieren.
Das problem ist, dass Ihre Immobilie Wert hat sich nicht verändert. Es ist immer noch die gleiche list, gleiche Referenz.
Eine Lösung könnte sein, dass Ihre Kollektionen sind von Typ
ObservableCollection
. Diese Listen bieten Veranstaltungen für WPF, wenn Sie Elemente hinzufügen oder entfernen.