为Grid设置ContextMenu UserControl

时间:2013-09-02 06:02:48

标签: c# wpf xaml user-controls custom-contextmenu

我在单独的用户Control Class CustomContextMenuUc中创建了一个自定义上下文菜单。

代码的简单版本如下所示。

<ContextMenu x:Class="CustomContextMenu.CustomContextMenuUc"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            ItemsSource="{Binding Groups}">
    <ContextMenu.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Items}">
            <TextBlock Text="{Binding Description.Value}" />
        </HierarchicalDataTemplate>
    </ContextMenu.ItemTemplate>
    <ContextMenu.OverridesDefaultStyle>True</ContextMenu.OverridesDefaultStyle>
    <ContextMenu.Placement>Custom</ContextMenu.Placement>
</ContextMenu>

我想在多个Windows中使用此CustomContextMenuUc。我可以用C#代码分配这个用户控件,如

ContextMenuGrid.ContextMenu = new CustomContextMenuUc();

其中ContextMenuGrid是网格。

我想在XAML中这样做我应该怎么做?

<DataGrid ContextMenu="">

1 个答案:

答案 0 :(得分:2)

您必须在窗口的资源中定义资源,如

<local:CustomContextMenuUc x:Key="MyContextMenu"/>

此处local是定义上下文菜单的xmlns。

然后你可以做

<DataGrid ContextMenu="{StaticResource MyContextMenu}">

由于