ContextMenu根据DataGrid的选择显示/隐藏项目?

时间:2012-05-05 14:35:24

标签: wpf xaml user-controls contextmenu resourcedictionary

我将上下文菜单设置为资源字典(因为它不能是用户控件):

<ResourceDictionary x:Class="Test.FooGridContextMenu"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ContextMenu x:Key="FooGridContextMenu" ContextMenuOpening="OnContextMenuOpening">

    </ContextMenu>
</ResourceDictionary>

我将它用于数据网格:

<DataGrid ContextMenu="{DynamicResource FooGridContextMenu}">...

上下文菜单资源的代码是:

using System;
using System.Windows;
using System.Windows.Controls;

namespace Test
{
    public partial class FooGridContextMenu : ResourceDictionary
    {
        public FooGridContextMenu()
        {
            InitializeComponent();
        }  

        void OnContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            Console.WriteLine("here i am");
        }
    }
}

问题:

1)事件回调方法没有被调用,即我没有看到“我在这里”的日志。

2)如何在开幕活动中根据复杂的逻辑显示/隐藏一些上下文菜单项?基本上我问我如何从事件回调访问数据网格,以便能够检索选定的行?我知道如何设置Visibility,但我不知道如何访问DataGrid来检索所选的模型/行。

3)ResourceDictionary要走这条路吗?我首先尝试UserControl,但它抱怨ContextMenu无法拥有视觉父级,因此,我想我无法使用它。

感谢您的帮助!

0 个答案:

没有答案