簡體   English   中英

如何解決委托類型的方法綁定問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM