如何在使用MVVM和.NET MAUI加载视图时将焦点设置为特定的条目控件

2nc8po8w  于 2023-01-14  发布在  .NET
关注(0)|答案(1)|浏览(324)

我在一个.NET MAUI MVVM项目中有一个带有一个入口控件和两个按钮的视图。当视图加载时,入口控件没有焦点。我如何在不向后面的代码添加函数的情况下将焦点设置到入口控件?例如,ContentPage后面的代码只是将ViewModel链接到BindingContext。
据我所知,表单控件不应该直接从ViewModel访问,那么在表单加载时,是否可以通过其他方法将焦点设置到入口控件上?

wpx232ag

wpx232ag1#

正如您在问题中提到的,如果没有.cs中的任何代码,我们无法在ViewModel中设置Entry焦点。
最简单的方法是在OnAppearing方法中设置焦点(允许用户在Page变为可见之前立即自定义行为):

protected override void OnAppearing()
{
    base.OnAppearing();
    Task.Run(() =>
    {
        while (!myentry.IsVisible)
        {              
            Task.Delay(10).Wait();
        }
        Application.Current.Dispatcher.Dispatch(() =>
        {
            myentry.Focus();
        });
    });
}

希望对你有用。

相关问题