Xamarin.Forms:使用自定义呈现器时,在代码中关闭日期选取器



我有一个自定义DatePicker,如果用户点击它,它就会打开。它使用与Xamarin.Forms DatePicker相同的机制。场景如下所示:

  • 用户点击自定义DatePicker
  • 他没有选择日期,而是打开另一个对话框
  • 现在同时打开两个对话框

我试图Unfocus()另一个元素是否得到焦点,但没有任何反应。仍显示DatePicker

我还能做什么?我应该手动抛出Unfocus事件吗?我可以以某种方式锁定 UI 以便用户在继续之前必须按"完成"按钮吗?

首先,如果我在 DatePickerTimePicker 之间切换,则不会出现此问题。仅当我从DatePicker/TimePicker切换到我的Entry(这会触发Focused事件中的自定义对话框(时,才会发生这种情况。

如果您在 UI 线程上执行此操作,Unfocus()确实有效:

private async void someEntry_Focused(object sender, FocusEventArgs e)
{
    Device.BeginInvokeOnMainThread(() =>
    {
        this.datePicker.Unfocus();
    });
    // custom dialog shown to user ...
}

最新更新