example data conversion wpf data-binding datacontext

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