Связывание с двумя различными DataContexts в ContextMenu - PullRequest
1 голос
/ 12 ноября 2011

Я пытаюсь привязать свойство контейнера из DataTemplate. Упрощенная версия моей разметки выглядит так:

<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>

Мой подход основан на этом посте , но, похоже, он не работает. Кажется, проблема возникает из-за размещения ContextMenu в визуальном дереве. В основном я пытаюсь привязать команду к DataContext объекта DataTemplate, но привязать CommandParameter к DataContext вне DataTemplate.

1 Ответ

1 голос
/ 12 ноября 2011

ContextMenus не находятся в том же дереве визуализации, что и остальные элементы управления, есть несколько вопросов относительно того, как выполнять привязки через эту границу, но это может быть несколько сложно без указания имен.

Сбой

ElementName также из-за отсутствия соединения с деревом, но вместо Binding.Source можно использовать x:Reference.

...