Cet exemple est certes un peu artificiel mais je fais quelque chose de similaire. Disons que j'ai les classes simples suivantes:Existe-t-il un moyen simple de spécifier une liaison de données WPF où le chemin est à un niveau supérieur?
public class Person
{
public string Name { get; set; }
public List<Alias> Aliases { get; set; }
}
public class Alias
{
public string AliasName { get; set; }
}
Et disons que je Xaml avec une grille de LayoutRoot, et un DataGrid où je veux accéder à la propriété Name dans le DataGrid au lieu des propriétés alias comme dans la deuxième colonne ici:
<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>
qui est intuitivement comment je tenterais de lier le nom, mais inutile de dire que l'air stupide. Existe-t-il quelque chose comme cela lorsque vous spécifiez un chemin, ou êtes-vous forcé d'obtenir une source relative jusqu'au contexte de données LayoutRoot? Si vous devez le faire, quel est le moyen le plus efficace?
Pourquoi cela ne fonctionne-t-il pas? 'Binding =" {Binding Name, Mode = TwoWay} "' – Amsakanna
@Veer, car il n'y a pas de propriété Name dans la classe Alias ... – Anvaka
@Anvaka: Mais le datacontext est l'instance de la classe person. Il devrait connaître la propriété Name. – Amsakanna