2009-03-10 7 views
8

Tengo una grilla de elementos que se rellena con enlace de datos. En la grilla tengo un DataTemplate para ciertas celdas. Necesito acceder al DataContext del elemento raíz (el que aloja la cuadrícula) para poder acceder a enlaces adicionales para admitir mi datatemplate.¿Cómo puedo acceder al DataContext raíz en una DataTemplate en WPF?

Así que tienes:

Window 
    Window.DataContext = TheDataSourceWithItemsAndSupports 
    DataGrid.ItemsSource = {Binding Items} 
     DataTemplate 
      ListBox.ItemsSource = {Binding Supports} 

Quiero que el {Binding Supports} en TheDataSourceWithItemsAndSupports, pero no veo cómo hacerlo. Intenté especificar {Binding} pero eso siempre devuelve null. También intenté usar RelativeSource FindAncestor, pero eso produce null también.

¿Alguna pista?

Respuesta

14

quizás tratar

Window Name="TheWindow" 
... 
ListBox.ItemsSource = {Binding DataContext.Supports, ElementName=TheWindow} 
+0

Creo que la ruta de enlace sería DataContext.Supports, pero esta fue mi idea también. –

+0

Tienes razón, enmendado. – user76035

+0

Esto funcionó, pero tuve que hacer un poco más de codificación (el escenario anterior no era una representación exacta de la situación). – Inferis

0

debería funcionar de la manera que usted describe. Lo único que veo en su DataTemplate no es ItemTemplate. También debe mirar la ventana de salida para ver dónde fallan los enlaces.

0

Mi solución era exponer la clase DataContext todo mediante la implementación de este campo

get 
{ 
    return this; 
} 

y luego unirse a él.

Cuestiones relacionadas