У меня есть словарь ресурсов, внутри которого у меня есть контекстное меню:
<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' и никакой метод расширения 'ContextMenu_OnContextMenuOpening', принимающий можно найти первый аргумент типа "MyApp.Components.MyContextMenu" (вам не хватает директивы using или ссылки на сборку?)
Обновление 2: Похоже, что как Console.WriteLine
, так и Debug.WriteLine
производят вывод, но только "случайно" и особенно когда я нажимаю на нижнюю часть элемента. Может быть, какое-то обнаружение столкновения не работает?