lambda非静态C#

时间:2015-11-30 09:55:45

标签: c# lambda static uwp

我正在尝试使用lambda函数动态地将动作处理程序绑定到UWP中的单选按钮:

private void populateMenu(ListBar lb)
{
    foreach (var item in lb.Groups)
    {
        leftMenuStackBar.Children.Add(ListBar.rbGrp(item));

        foreach (var LItem in item.Items)
        {
            var radioButton = ListBar.rb(LItem);
            radioButton.Click += (o, i) =>
            {
                loadFromMenuClick(LItem.Transl, frame);
            };

        leftMenuStackBar.Children.Add(radioButton);
    }
}

编译器说函数“loadFromMenuclick”必须是静态的。在这个函数中我想使用Frame.Navigate函数:

public void loadFromMenuClick(string test, Frame f)
{
    Frame.Navigate(typeof(Themes.AbstractView), test);
}

我给它了“Frame f”对象,因为我之前有过这个错误,但是导航功能的工作方式,最好使用静态Frame.Navigate而不是f.Navigate。

当我尝试使用Frame.Navigate时,我得到“非静态字段,方法或属性'对象引用'Frame.Navigate(Type,object)'”错误...

如何让它发挥作用?

1 个答案:

答案 0 :(得分:0)

问题在于你的测试"串。在调用事件处理程序时,没有LItem.Transl的引用。由于我们不知道该项目中的内容以及它与RadioButton的关联方式,因此我会假设字符串值{{{I}}继续我的回复。 1}}也存储在LItem.Transl的{​​{1}}属性中。这是您附加eventhandler的循环代码

Tag

您的功能将是:

RadioButton