data - Enlace de datos WPF: ¿Cómo accedo al contexto de datos "principal"?
wpf converter binding (3)
Tengo una lista (ver abajo) contenida en una ventana. El DataContext la ventana tiene dos propiedades, Items y AllowItemCommand .
¿Cómo obtengo el enlace de la propiedad del Command del Hyperlink necesita resolver contra el DataContext la ventana?
<ListView ItemsSource="{Binding Items}">
<ListView.View>
<GridView>
<GridViewColumn Header="Action">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock>
<!-- this binding is not working -->
<Hyperlink Command="{Binding AllowItemCommand}"
CommandParameter="{Binding .}">
<TextBlock Text="Allow" />
</Hyperlink>
</TextBlock>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Esto también funciona en Silverlight 5 (quizás antes, pero no lo he probado). Usé la fuente relativa así y funcionó bien.
RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=telerik:RadGridView}"
Esto también funcionará:
<Hyperlink Command="{Binding RelativeSource={RelativeSource AncestorType=ItemsControl},
Path=DataContext.AllowItemCommand}" />
ListView heredará su DataContext de la Window , por lo que está disponible en este punto también.
Y como ListView , al igual que los controles similares (por ejemplo, Gridview , ListBox , etc.), es una subclase de ItemsControl , la Binding de dichos controles funcionará perfectamente.
Podrías probar algo como esto:
...Binding="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}, Path=DataContext.AllowItemCommand}" ...