1

コンテキスト メニューをリソース ディクショナリとして設定しています (ユーザー コントロールにすることはできないため)。

<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) イベント コールバック メソッドが呼び出されません。つまり、「Here i am」ログが表示されません。

2) オープニング イベントの複雑なロジックに基づいて、コンテキスト メニュー項目の一部を表示/非表示にするにはどうすればよいですか? 基本的に、イベント コールバックからデータ グリッドにアクセスして、選択した行を取得する方法を尋ねています。の設定方法は知っていますが、 にアクセスして選択したモデル/行を取得するVisibility方法がわかりません。DataGrid

3)ResourceDictionary行く道はここですか。最初に試したのですが、視覚的な親を持つことができないUserControlと不平を言うContextMenuので、使用できないと思います。

助けてくれてありがとう!

4

0 に答える 0