Ich habe stundenlang nach diesem Fehler gesucht, der im Ausgabefenster erscheint. Ich bin ziemlich neu in Bindungen in WPF, also bin ich sicher, dass ich etwas vermisse.
Vollständiger Text des Fehlers (es gibt einen für jeden Bindungspfad, der diesem ähnlich ist):
System.Windows.Data Fehler: 39: BindingExpression path error: Eigenschaft 'TestItem' nicht gefunden für 'object' '' String '(HashCode = -842352750)'. BindingExpression: Pfad = TestItem; DataItem = 'String' (HashCode = -842352750); Zielelement ist 'TextBlock' (Name = ''); Zieleigenschaft ist 'Text' (Typ 'String')
BEARBEITEN: Alles scheint so zu funktionieren, wie es sollte, aber ich bekomme diese Fehler im Ausgabefenster.
XAML:
%Vor%Code dahinter:
%Vor%Sie möchten den DataContext nicht auf dem Benutzersteuerelement festlegen. Stattdessen möchten Sie es in dem Bereich des UserControl festlegen.
Normalerweise machen Sie das im Konstruktor des UserControls. Ich füge normalerweise eine Zeile wie folgt hinzu:
%Vor%Wo RootElement das erste Unterelement (der Inhalt) Ihres UserControls ist (normalerweise ein Panel wie Grid oder StackPanel).
In Ihrem Fall wäre es:
this.lsvwOutput.DataContext = FindResource("myDataSource")
;
Und stellt sicher, dass nach der InitializeComponent () -Aufruf ist.
Es ist nur eine Frage des Scoping. Sie legen den Datenkontext im Stammbereich des Benutzersteuerelements fest. Dies ist ein wirklich nicht offensichtlicher Teil von WPF.
UPDATE: Wie Markus unten betont, möchten Sie im Fall einer Listenansicht ein Array von Daten und nicht nur einen Datenpunkt festlegen. Berücksichtigen Sie dies, wenn Sie den DataContext in Ihrem Konstruktor festlegen.
scheint so zu sein, als ob Sie Ihre listviews itemssource an ein Objekt und nicht an ein Array binden. Funktioniert alles visuell? oder siehst du nichts?
BEARBEITEN : Was passiert, wenn Sie statt:
schreiben %Vor%das:
%Vor%oder eine ähnliche Sammlungsdefinition