![](/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.