Estou tentando vincular a uma propriedade de um contêiner de dentro de um DataTemplate. Uma versão simplificada da minha marcação se parece com:
<Grid>
<Grid.Resources>
<DataTemplate DataType="{x:Type myCustomItem}">
<!--Visual stuff-->
<StackPanel>
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Add Item"
Command="{Binding myCustomItemsICommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type CustomContainerType}}, Path=ContainerProperty}"/>
</ContextMenu>
</StackPanel.ContextMenu>
</StackPanel>
</DataTemplate>
</Grid.Resources>
<CustomContainerType/>
</Grid>
Minha abordagem é baseada em esta postagem mas não parece estar funcionando.O problema parece surgir da colocação do ContextMenu dentro da árvore visual. Basicamente, estou tentando vincular o Command ao DataContext do DataTemplate, mas vincular o CommandParameter a um DataContext fora do DataTemplate.
Respostas:
1 para resposta № 1ContextMenus
não estão na mesma árvore visual que o resto dos controles, existem algumas questões sobre como fazer ligações através desse limite, mas isso pode ser um pouco difícil sem especificar nomes.
ElementName
falha também devido à falta de conexão da árvore, mas você pode usar x:Reference
no Binding.Source
em vez de.