[英]How to resolve the Method binding issue with that of delegate type?
當我嘗試從Xaml頁面觸發該事件時,我試圖創建自己的ContextMenuOpening事件(事件ContextMenuOpening名稱應與FrameworkElement類相同),其拋出“無法綁定到目標方法,因為其簽名或安全性與該方法不兼容”代表類型”,但是當我將事件掛在代碼后面時,它的效果很好。
請找到下面的代碼片段以重現問題並提供建議。
XAML
<local:ContextMenuEvetTest x:Name="menu" ContextMenuOpening="menu_ContextMenuOpening" />
背后的代碼
#region Main Class
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//this.menu.ContextMenuOpening += menu_ContextMenuOpening;
}
void menu_ContextMenuOpening(object sender, ContextMenuOpeningEventArgs e)
{
}
}
#endregion
#region Base Class
public class ContextMenuEvet : Control
{
public ContextMenuEvet()
{
}
public delegate void ContextMenuOpeningEventHandler(object sender, ContextMenuOpeningEventArgs e);
public new event ContextMenuOpeningEventHandler ContextMenuOpening;
internal void GetContextMenuOpeningEvent(ContextMenuOpeningEventArgs e)
{
if (ContextMenuOpening != null)
ContextMenuOpening(this, e);
}
}
#endregion
#region Derived Class
public class ContextMenuEvetTest : ContextMenuEvet
{
static ContextMenuEvetTest()
{
}
}
#endregion
#region EventsArgument
public class ContextMenuOpeningEventArgs : CancelEventArgs
{
}
#endregion
提前致謝。
傑耶斯里M
將事件定義更改為:
public new event ContextMenuEventHandler ContextMenuOpening
{
add
{
base.AddHandler(FrameworkElement.ContextMenuOpeningEvent, value);
}
remove
{
base.RemoveHandler(FrameworkElement.ContextMenuOpeningEvent, value);
}
}
並刪除它,
if (ContextMenuOpening != null)
ContextMenuOpening(this, e);
和使用,
internal void GetContextMenuOpeningEvent(ContextMenuEventArgs e)
{
base.OnContextMenuOpening(e);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.