Ich lerne WPF, also bin ich irgendwie n00b. Ich habe ein paar Beispiele gesehen, wie ich machen kann, was ich tun möchte, aber nichts genau ...
Die Frage: Ich möchte List an ListBox binden. Ich möchte es in XAML tun, ohne Code in Code hinter. Wie kann ich das erreichen?
Im Moment mache ich es so :
XAML
%Vor%Code hinter
%Vor% Aber ich möchte FileList.ItemsSource = files;
und FileList.Items.Refresh();
im C # -Code loswerden.
Danke
Richten Sie zuerst die Bindung in Ihrer Listbox ein:
%Vor%oder
%Vor%Stellen Sie als Nächstes sicher, dass "Dateien" eine Eigenschaft in Ihrem DataContext (oder Code dahinter) ist. (Sie können nicht an Felder binden, nur Eigenschaften ...)
Im Idealfall möchten Sie die Dateien als ObservableCollection<T>
anstelle von% festlegen. auch co_de%. Dadurch kann die Bindung Elemente richtig hinzufügen oder entfernen.
Wenn Sie diese beiden Dinge tun, sollte es einfach funktionieren.
Zwei Tricks, die zu Reeds Antwort hinzugefügt werden können:
1) Wenn in Ihren Listenfeldelementen nur eine Zeichenfolge angezeigt wird, können Sie das ListBox.ItemTemplate
folderol vermeiden, indem Sie einfach ListBox.DisplayMemberPath
festlegen.
2) Sie können das DataContext
des Fensters auf sich selbst setzen. Geben Sie dem Fenster beispielsweise den Namen MyWindow
und setzen Sie DataContext
auf {Binding ElementName=MyWindow}
. Jetzt können Sie eine Bindung an eine seiner öffentlichen Eigenschaften herstellen. (Ich bin mir ziemlich sicher, dass Reed derjenige ist, von dem ich zuerst gelernt habe.)
Tags und Links wpf c# binding xaml wpf-controls