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}" ...