静态上下文菜单命令目标

时间:2013-05-14 17:00:07

标签: c# wpf contextmenu

我在datagridview中的列标题上有以下上下文菜单。

<DataGridCheckBoxColumn Binding="{Binding Include,UpdateSourceTrigger=PropertyChanged}"  Width="50">
    <DataGridCheckBoxColumn.HeaderTemplate>
        <DataTemplate>
            <TextBlock Text="Export">
                <TextBlock.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="Alle auswaehlen"/>
                        <MenuItem Header="Alle abwahelen"/>
                    </ContextMenu>
                </TextBlock.ContextMenu>      
            </TextBlock>
        </DataTemplate>
    </DataGridCheckBoxColumn.HeaderTemplate>
</DataGridCheckBoxColumn>

如您所见,上下文菜单是静态的。如何将Command属性映射到我的代码中的静态方法?我在网上找到的所有例子都是用于灵活绑定或剪切/复制。

2 个答案:

答案 0 :(得分:1)

您可以改为使用点击事件:

<MenuItem Header="Alle auswaehlen" Click="MenuItem_Click_1"/>

然后在您的代码中使用此方法:

private void MenuItem_Click_1(object sender, RoutedEventArgs e)
{

}

答案 1 :(得分:0)

我不明白为什么ContextMenu会是静态的;它似乎是为每个文本块创建的,将为每个标题创建。如果你只有一个标题,那么我认为它是事实上的静态。

无论哪种方式,如果要绑定到类MyCommand的静态命令MyNamespace.MyClass,那么使用以下语法:

<MenuItem Header="header" Command="{x:Static mynamespace:MyClass.MyCommand}"/>

请注意,您需要在父XAML对象上指定xml命名空间,如下所示:

xmlns:mynamespace="clr-namespace:MyNamespace"