xamarin - 为什么条目的 Focus() 方法在页面的构造函数中不起作用?

标签 xamarin xamarin.forms

在 Xamarin Forms 中,当我使用以下代码时:

public SomePage()
{
    InitializeComponent();
    someEntry.Focus();
}

默认情况下,代码条目没有焦点,但是,如果我使用以下代码:

protected override void OnAppearing()
{
    base.OnAppearing();
    someEntry.Focus();
}

它根据需要工作(重点输入)。这是为什么?在 InitializeComponent() 调用之后,codeEntry 是否已经存在并位于它的位置,功能齐全?我的意思是,我确实可以从页面构造函数更改 Text 属性。

最佳答案

在 Xamarin 中,每个控件都有等效的 View 渲染器,即 native UI 元素,只有在将控件添加到 native 元素层次结构时才会创建。在构造函数中,尚未创建条目的 native 元素。然而,在 OnAppering 中,entry 对应的原生元素被创建,因此它可以获得焦点。

此外,这似乎是一个错误,因为 Xamarin 正在存储状态并在创建 native UI 元素时应用它。是时候提交错误了!!!

关于xamarin - 为什么条目的 Focus() 方法在页面的构造函数中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38240733/

相关文章:

xamarin.forms - 如何在需要时隐藏编辑器上的键盘

c# - 计时器不包含在 Xamarin.Forms 的 System.Threading 中

xamarin - 关闭 Xamarin 表单 'Entry' 组件上的自动更正

unity-game-engine - 为什么Unity3D使用Monodevelop(4.0.1)而不是最新的Xamarin(5.9)

Xamarin 在 ScrollView 中形成 ListView 问题

c# - Xamarin IOS : Task delay issue

android - 如何使用 Xamarin.Forms 显示警告框以进行验证?

android - Xamarin 无法使用 : "Unexpected install output: cmd: Can' t find service: package"将应用程序部署到模拟器

c# - INotifyPropertyChanged 未触发 PropertyChanged

c# - DisplayAlert 之前的事件指示器