2013-05-31 3 views
0

У меня есть два пользовательских элемента управления LeftPanel и DeviceList. DeviceList находится внутри LeftPanel. Я хочу, чтобы контекстное меню в списке устройств могло вызвать команду в родительской модели представления, которая задана в сетке, которая содержит DeviceList. Я пробовал следующее, но это не работает.Связать ICommand с родителем ViewModel

Вот ContextMenu в DeviceList

<MenuItem Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
        AncestorType={x:Type local:LeftPanel}}, 
        Path=DeviceListViewModel.RemoveDevice}"> 

Здесь представлен LeftPanel UserControl

<UserControl x:Class="Tool.LeftPanel" .... > 
    <Grid DataContext="{Binding DeviceListViewModel}" Grid.Column="1"> 
     <local:DeviceList Grid.Row="1" Margin="0,0,0,10"/> 
+0

Я бы сказал, что не делаю этого. попросите «DeviceListView» вызвать команду «DevicelistViewModel» и отправить «сообщение» из этой виртуальной машины в ее родительскую виртуальную машину и действовать соответствующим образом. не сходите по маршруту привязки View на нескольких виртуальных машинах. Бывает очень запутанным – Viv

ответ

0

contextmenu не является частью visualtree, поэтому я считаю, что ваша привязка просто неверна, потому что datacontext - это не то, о чем вы думаете.

использование Snoop проверить DataContext и привязки во время выполнения

я предполагаю, что вы должны работать с PlacementTarget в креплениях

+0

Хм, что имеет смысл – Chris

Смежные вопросы