如何将焦点设置为Xamarin.forms目标UWP平台的焦点



我已经使用Xamarin.Forms定位AndroidUWP平台创建了一个应用程序。(台式机上的UWP,而不是手机)。
我使用的是主/详细信息导航,UWP在从页面到另一个页面导航时保持打开状态。在主页上,只有在UWP上,我才有一个Entry,我想在视图出现时要聚焦,所以我做到了:

protected override void ViewIsAppearing(object sender, EventArgs e)
{
    base.ViewIsAppearing(sender, e);
    Device.OnPlatform(WinPhone: () =>
    {
        CustomComponent.GainFocus();
    });
}

在我的CustomComponent内部,实际上是堆叠的,我有:

public void GainFocus()
{
    CustomEntry.Focus();
}

我的问题是,当我导航到Page2Page3时,然后回到MainPage函数被调用,但是该条目从未集中到,并且焦点在从导航列表中单击项目的导航面板中停留在导航面板中。我该如何修复此问题,以便我的Entry始终获得焦点?

编辑:

我进行了一些调试,以了解发生了什么。
我将FocusedUnfocused的处理程序添加到我的CustomEntry

private void CustomEntry_Unfocused(object sender, FocusEventArgs e)
{
    System.Diagnostics.Debug.WriteLine("CustomEntry_Unfocused");
}
private void CustomEntry_Focused(object sender, FocusEventArgs focusEventArgs)
{
    System.Diagnostics.Debug.WriteLine("CustomEntry_Focused");
}

添加此后,我运行了我的应用程序并检查了输出。
ViewIsAppearing>聚焦呼叫。
单击条目外>调用未关注的
从主页导航到另一页>不调用未关注的,然后返回到主页之后>不调用聚焦
如果CustomEntry没有专注,并且我远离主页,然后回来>聚焦呼叫。

edit2:

我尝试在OnViewIsDisappearing事件中强迫Unfocus以下方式:

protected override void ViewIsDisappearing(object sender, EventArgs e)
{
    base.ViewIsDisappearing(sender, e);
    Device.OnPlatform(WinPhone: () =>
    {
        CustomComponent.LoseFocus();
    });
}

和自定义组件内:

public void LoseFocus()
{
    CustomEntry.Unfocus();
}

尝试此操作后,它也不称为Unfocused ..
有什么想法吗?

只需添加

CustomEntry.Focus();

在您想要的页面的InitializeComponent();之后。

相关内容

  • 没有找到相关文章

最新更新