簡體   English   中英

嘗試將焦點集中在xamarin.forms中時,字段初始值設定項無法引用非靜態字段,方法或屬性錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM