gpt4 book ai didi

c# - 自定义附加事件的处理程序

转载 作者:太空狗 更新时间:2023-10-30 00:58:51 26 4
gpt4 key购买 nike

我正在使用我创建的自定义附加事件,我正在尝试向该事件添加处理程序

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void dataGridTasks_Drop(object sender, RoutedEventArgs e)
{

}
}

这里是 XAML 代码

<ListView  util:DragDropHelper.Drop="dataGridTasks_Drop">

我在 InitializeComponent 运行时遇到这个错误

Object of type 'System.String' cannot be converted to type 'System.Windows.RoutedEventHandler'.

有人知道我为什么会收到这个错误吗?谢谢!

这是我的事件代码

    public static readonly RoutedEvent DropEvent = EventManager.RegisterRoutedEvent(
"Drop", RoutingStrategy.Bubble, typeof(DropEventArgs), typeof(DragDropHelper));

public static void AddDropHandler(DependencyObject d, RoutedEventHandler handler)
{
UIElement uie = d as UIElement;
if (uie != null)
{
uie.AddHandler(DragDropHelper.DropEvent, handler);
}
}

public static void RemoveDropHandler(DependencyObject d, RoutedEventHandler handler)
{
UIElement uie = d as UIElement;
if (uie != null)
{
uie.RemoveHandler(DragDropHelper.DropEvent, handler);
}
}

DropEventArgs代码

class DropEventArgs : RoutedEventArgs
{
public object Data { get; private set; }
public int Index { get; private set; }

public DropEventArgs(RoutedEvent routedEvent, object data, int index)
: base(routedEvent)
{
Data = data;
Index = index;
}
}

最佳答案

在检查样本和我的代码几个小时后,问题确实出在事件的事件定义上。(感谢 Mihir 和 Dabblernl)。

我在 RegisterRoutedEvent 方法的第三个参数中犯了一个错误,提供的是事件类型而不是处理程序类型。

正确的代码如下:

    public delegate void DropEventHandler(object sender, DropEventArgs e);

public static readonly RoutedEvent DropEvent = EventManager.RegisterRoutedEvent(
"Drop", RoutingStrategy.Bubble, typeof(DropEventHandler), typeof(DragDropHelper));

错误信息具有误导性。

关于c# - 自定义附加事件的处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2120439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com