Ich habe viele Stunden mit diesem Problem verbracht.
Ich habe eine Klasse mit Daten:
%Vor%Als nächstes habe ich eine Klasse mit observablecollection der Klasse userClass:
%Vor%In der Tat, nach vielen Tests eine Bearbeitung, funktioniert ein großer Teil des Codes nicht, wie Serialisierung. Aber es ist nicht notwendig für die Datenbindung und Bindung ist, was ich jetzt löse.
Also ich habe diese Sammlung und möchte sie an listBox binden. Ich habe es auf verschiedene Arten versucht, aber ich habe es nicht zum Laufen gebracht.
Der letzte, den ich ausprobiert habe, gab mir den Schreibfehler:
%Vor%Die Ressource 'Benutzer' kann nicht aufgelöst werden.
Einige Punkte zu beachten
public
und nicht private
. private
. class
nicht hinter der Klasse an. ItemsSource
, die Sie angeben, sollte gemäß dem Umfang der Daten sein, in meinem Beispiel die Benutzerliste im Klassenbereich und ich habe das ItemSource bei Window Loaded-Ereignis bereitgestellt. Hier ist der vollständige Beispielcode, in dem ich das Grid Control in ListBox verschachtelt habe, weil Sie später die ListBox Eigenschaft für VirtualizingStackPanel ändern können.
Es würde also einen enormen Leistungsgewinn bringen, wenn Sie auf der Liste viele Updates haben.
Sie können auch BindingList
verwenden, was meiner Meinung nach besser ist als ObservableCollection
leistungsmäßig.
Benutzerklasse:
%Vor%Benutzerlistenklasse:
%Vor%XAML:
%Vor%XAML-Code hinter:
%Vor%Sie müssen zwei Dinge tun:
Setzen Sie zunächst DataContext
von beliebigem Element ( Window
/ UserControl
/ was auch immer) Ihr ListBox
auf ein Objekt, das wie folgt aussieht:
Dies ist Ihr Ansichtsmodell, an das Sie binden möchten.
Zweitens, ändern Sie Ihre Bindung zu ItemsSource="{Binding Path=users}"
. Dies bedeutet "setze den Wert meiner ItemsSource
-Eigenschaft auf den Wert der Eigenschaft users
auf this.DataContext
. Da die DataContext
vom übergeordneten Element geerbt wird, und Sie diese oben auf die Klasse ViewModel
setzen, Ihr ListBox
zeigt nun Ihre Benutzerliste an.
Tags und Links c# binding listbox xaml observablecollection