MVVM Listbox ContextMenu

时间:2015-01-22 15:03:55

标签: wpf xaml mvvm

我试图通过右键单击并在wpf mmv light app上选择上下文菜单来触发命令。列表框由数据表组成。

<ListBox.ContextMenu>
     <ContextMenu Width="150" >
         <MenuItem Header="Move to holiday">
              <MenuItem.Icon>
               <TextBlock FontFamily="/BoonManager;component/Fonts/seguisym.ttf#Segoe UI Symbol" Text="&#x1f304;" />
              </MenuItem.Icon>
      <i:Interaction.Triggers>
            <i:EventTrigger EventName="Click">
                  <cmd:EventToCommand Command="{Binding DataContext.ComMoveToHoliday ,ElementName=LayoutRoot}"/>
      </i:EventTrigger>
            </i:Interaction.Triggers>
                  </MenuItem>
       </ContextMenu>
</ListBox.ContextMenu>  

我也尝试过使用这个

DataContext="{Binding Path=PlacementTarget, RelativeSource={RelativeSource Self}}"

但没有运气。谢谢Scott

**更新 我的代码运行在ContextMenu上面运行正常。

<i:Interaction.Triggers>
     <i:EventTrigger EventName="MouseDoubleClick">
            <cmd:EventToCommand Command="{Binding DataContext.ComShowPerson, ElementName=LayoutRoot}" CommandParameter="Expected" />
      </i:EventTrigger>
</i:Interaction.Triggers>

所以必须是contextMenu阻止这个。

2 个答案:

答案 0 :(得分:1)

我设法通过此链接找到答案。 http://www.codeproject.com/Articles/80632/WPF-Context-Menu-on-List-Item 工作得很好。谢谢你的帮助。赞赏。斯科特

答案 1 :(得分:0)

尝试做类似的事情

            <ListView.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Copy" Command="{Binding FullPathCommand}"/>
                </ContextMenu>
            </ListView.ContextMenu>