Ich habe ein WPF-Fenster mit einem Ansichtsmodell, das als DataContext festgelegt wurde, und habe eine ListBox mit einem DataTemplate und seiner ItemsSource, die an das Ansichtsmodell gebunden sind, wie im folgenden Beispiel:
Modell anzeigen:
%Vor%MainWindow.xaml:
%Vor%Natürlich wird die TeamName-Eigenschaft der Team-Klasse nicht in den ListBox-Elementen angezeigt, da jedes Element der LisBox der DataContext der List.ItemTemplate ist und den DataContext des Fensters außer Kraft setzt.
Die Frage ist: Wie kann ich mit der TeamName-Eigenschaft des Ansichtsmodells (Window.DataContext) von der DataTemplate der ListBox aus arbeiten?
Ich würde ein Ansichtsmodell für ein Teammitglied mit einer TeamName
-Eigenschaft erstellen, etwa wie folgt:
Dann wird Ihr XAML so sauber aussehen wie in Ihrem Beispiel. Mit MVVM sollten Sie keine exotischen Bindetricks in der Ansicht benötigen. Alles, was Sie brauchen, sollte über das Ansichtsmodell verfügbar sein.
Warum binden Sie Ihren DataContext nicht an das Team und machen dann Ihre Artikelquelle an team.members gebunden?
Normalerweise ordne ich meinen Datenkontext in meinem Codebehind ein, aber es sollte immer noch nicht anders für Sie sein.itemsouce="{Binding Path=" team.Members "}
Ich schätze, es ist wirklich das Gleiche wie das, was Aviad vorgeschlagen hat. Ich ordne nur Datenkontext in meinem Codebehind zu.
Tags und Links wpf .net data-binding mvvm datatemplate