リソースディクショナリがあり、その中にコンテキストメニューがあります。
<ResourceDictionary x:Class="MyApp.Components.MyContextMenu"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyApp"
xmlns:components="clr-namespace:MyApp.Components">
<ContextMenu ContextMenuOpening="OnContextMenuOpening">
リソースディクショナリXAMLには、次のコードがあります。
using System;
using System.Windows;
using System.Windows.Controls;
namespace MyApp.Components
{
public partial class MyContextMenu : ResourceDictionary
{
public MyContextMenu()
{
InitializeComponent();
}
void OnContextMenuOpening(object sender, ContextMenuEventArgs e)
{
Console.WriteLine("here i am!");
}
}
}
ログが表示されていません。イベントが発生しない、または適切な場所に到達しないのはなぜだろうか。このリソースディクショナリ内にコンテキストメニューをラップしたために問題が発生するのでしょうか。
更新:興味深いことに、分離コード関数を削除すると、コンパイル中にエラーが発生します。
'ContextMenu_OnContextMenuOpening'の定義が含まれておらず、タイプ'MyApp.Components.MyContextMenu'の最初の引数を受け入れる拡張メソッド'ContextMenu_OnContextMenuOpening'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
更新2:両方のように見え、出力Console.WriteLine
をDebug.WriteLine
生成しますが、「ランダムに」のみ、特にアイテムの下部近くをクリックした場合にのみ発生します。ある種の衝突検出が機能していない可能性がありますか?