WPF:将分隔符添加到参考资料中定义的上下文菜单

时间:2016-05-16 09:28:17

标签: wpf mvvm datagrid contextmenu separator

我在ContextMenu中定义了Resources。更具体地说,此上下文菜单用于DataGrid,并在右键单击行时显示。因此,我无法使用<DataGrid.ContextMenu>来定义此上下文菜单,我需要这样做:

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}">
        <Setter Property="ContextMenu" Value="{StaticResource DataGridCM}" />
    </Style>
</DataGrid.RowStyle>

<ContextMenu x:Key="DataGridCM"
    DataContext="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget.DataContext}">
    <MenuItem Header="Item 1" Command="{Binding Command1}" />
    <MenuItem Header="Item 2" Command="{Binding Command2}" />
    <Separator />
    <MenuItem Header="Other Item" Command="{Binding OtherCommand}" />      
</ContextMenu>

这给了我这个错误:

A style intended for type 'MenuItem' cannot be applied to type 'Separator'.

是否有任何方法可以添加Separator?我已经尝试过下面显示的ItemsSource,但它仍然给了我相同的运行时错误。

<ContextMenu.ItemsSource>
    <CompositeCollection>
        <MenuItem Header="Item 1" Command="{Binding Command1}" />
        <MenuItem Header="Item 2" Command="{Binding Command2}" />
        <Separator />
        <MenuItem Header="Other Item" Command="{Binding OtherCommand}" />  
    </CompositeCollection>
 </ContextMenu.ItemsSource>

我知道如果我使用代码隐藏可以做到这一点,但我想避免这种情况,因为我使用的是MVVM。我不希望其他人在几年之后接管我的项目会让一个具有代码隐藏的View类感到困惑。有没有办法解决这个问题,可能纯粹来自XAML级别?

0 个答案:

没有答案