Dieses Beispiel ist zugegebenermaßen ein wenig erfunden, aber ich mache etwas ähnliches. Lassen Sie uns sagen, dass ich die folgenden einfachen Klassen haben:Gibt es eine einfache Möglichkeit, eine WPF-Datenbindung anzugeben, bei der der Pfad eine Ebene höher ist?
public class Person
{
public string Name { get; set; }
public List<Alias> Aliases { get; set; }
}
public class Alias
{
public string AliasName { get; set; }
}
Und lassen Sie uns sagen, dass ich XAML mit einem LayoutRoot Gitter haben, und ein Datagrid, wo ich statt der Aliases Eigenschaften die Eigenschaft Name im Datagrid zugreifen möchten wie in der zweiten Spalte hier:
<Grid x:Name="LayoutRoot" DataContext="PersonInstance">
<DataGrid ItemsSource="{Binding Aliases}">
<DataGrid.Columns>
<data:DataGridTextColumn Header="AliasName" Binding="{Binding AliasName, Mode=TwoWay}"/>
<data:DataGridTextColumn Header="Name" Binding="{Binding ../Name, Mode=TwoWay}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
intuitiv ist, wie ich den Namen zu binden versuchen würde, aber es ist unnötig zu sagen, dass dumm aussieht. Gibt es bei der Angabe eines Pfades etwas Ähnliches oder müssen Sie eine relative Quelle zum LayoutRoot-Datenkontext abrufen. Wenn es sein muss, was ist der effizienteste Weg?
Warum funktioniert das nicht? 'Binding =" {Binding Name, Modus = TwoWay} "' – Amsakanna
@Veer, weil es keine Name-Eigenschaft in der Klasse Alias gibt ... – Anvaka
@Anvaka: Aber der Datenkontext ist die Instanz der Personenklasse. Es sollte die Name-Eigenschaft kennen. – Amsakanna