uwp C#在运行时绑定事件时将附加参数传递给Navigationview事件处理程序

问题描述

我有一个Navigationview,我想将额外的参数传递给selection_changed事件

MUXC.NavigationView navigationview = new MUXC.NavigationView();
navigationview.SelectionChanged += new EventHandler((s,e) => Navigationview_SelectionChanged(s,e,param));

获取上述代码错误

无法将类型'System.Eventhandler'隐式转换为 'Windows.Foundation.TypedEventHandler'

解决方法

附加事件时,通常无需新建EventHandler,因为NavigationView.SelectionChanged的类型为 TypedEventHandler ,直接分配将导致类型不匹配。 / p>

如果创建SelectionChanged事件句柄方法,则可以将其附加如下:

var navigationview = new muxc.NavigationView();
navigationview.SelectionChanged += Navigationview_SelectionChanged;

private void Navigationview_SelectionChanged(muxc.NavigationView sender,muxc.NavigationViewSelectionChangedEventArgs args)
{
    // Do something...
}

在您的代码中,您似乎已经创建了带有三个参数的方法。如果您需要保留param,则需要执行一些转换。

navigationview.SelectionChanged += (_s,_e) =>
{
    Navigationview_SelectionChanged(_s,_e,param);
};