![](/img/trans.png)
[英]A field initializer cannot reference the non-static field, method, or property
[英]A field initializer cannot reference the non-static field, method, or property error when trying to focus an entry in xamarin.forms
我正在开发xamarin.forms应用程序,但出现此错误,我无法找到解决方案
public MyClass()
{
InitializeComponent();
entry2.OnBackspace += backspaceEventHandler;
}
在backspaceEventHandler方法中,我尝试编写类似这样的内容
private static BackspaceEventHandler backspaceEventHandler = (sender, e) =>
{
entry1.Focus();
};
我的entry1标签是这样的
<StackLayout>
<entry x:FieldModifier="Public" x:Name="entry1" HorizontalTextAlignment="Center" Text="{Binding entry1Text}"/>
</StackLayout>
在这里,它在entry1.Focus()语句中显示错误,这是什么原因,我该如何解决?
谢谢。
与其使用lambda表达式初始化backspaceEventHandler
,不如将其编写为方法,或者将其完全删除,然后直接将事件处理程序直接初始化为lambda即可。 另外,删除static
关键字-正如我在评论中所写的-如果没有引用特定实例,则静态成员不能访问实例成员。
这是应该解决该问题的两个版本的代码:
public MyClass()
{
InitializeComponent();
entry2.OnBackspace += (sender, e) => entry1.Focus();
}
我不确定事件处理程序的签名应该是什么,但是假设object sender, EventArgs e
还有另一个选择:
public MyClass()
{
InitializeComponent();
entry2.OnBackspace += BackspaceEventHandler ;
}
private void BackspaceEventHandler(object sender, EventArgs e)
{
entry1.Focus();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.