Ho qualche problema nel capire come impostare il DataContext
corretto su un ContextMenu
.WPF ContextMenu woes: Come imposto il DataContext del ContextMenu?
Ho una collezione di modelli di visualizzazione che sono la fonte di uno ItemsControl
. Ogni modello di vista ha una collezione di elementi che sono anche la fonte di un altro ItemsControl
. Ogni elemento è utilizzato per disegnare un'immagine che ha un ContextMenu
. Lo MenuItems
in quello ContextMenu
deve eseguire il binding a un comando sul modello di visualizzazione, ma lo PlacementTarget
di ContextMenu
punta al singolo elemento.
mio Xaml sembra qualcosa di simile:
<ItemsControl ItemsSource="{Binding Markers"}>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Image>
<Image.ContextMenu>
<ContextMenu>
<MenuItem Header="Edit" Command="{Binding EditCommand}" />
</ContextMenu>
</Image.ContextMenu>
</Image>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Come posso impostare la DataContext
del ContextMenu
al corrispondente vista del modello padre del articolo?
Il problema di questo è che non voglio legare a ciò che il PlacementTarget è. Voglio collegarmi al DataContext del controllo esterno. –
Sei sicuro di non avere lo stesso DataContext (cioè outerControl e inner itemsControl)? – kevindaub
Sì, il DataContext che ottengo utilizzando PlacementTarget è un livello troppo profondo. Torno a un elemento, ma quello di cui ho bisogno è il modello di vista che ha la collezione che contiene quell'oggetto. Se potessi legarmi al DataContext del controllo esterno, sarebbe perfetto. –