【问题标题】:Trigger Xamarin.Forms Picker触发 Xamarin.Forms 选择器
【发布时间】:2015-02-28 17:54:30
【问题描述】:

我可以通过编程方式触发选择器吗?

我想在选择器旁边有一个按钮,指示选择器是一个可点击的“下拉菜单”。但是单击按钮时如何打开选择器?

【问题讨论】:

  • 顺便说一句,如果 Picker 类没有提供您想要的,在Allan Ritchie - "ACR.UserDialogs" nuget src 的“操作表”示例中可以看到更灵活的方法。通过 StandardViewModel.CreateActionSheetCommand 中的描述性配置对象定义。在 UWP 上,这是基于 UWP XAML ContentDialog class。在 iOS 和 Android 上,构建了适当的原生控件。
  • ...我不确定为什么 nuget 不建立在 Xamarin Forms ContentView class 之上——这样做可以更轻松地生成自定义跨平台对话框。我在上面提到了 UWP 实现,因为它看起来可以适应使用带有内容视图的 X-Forms 视图。请参阅平台/UWP 下的UserDialogsImpl

标签: xamarin.forms


【解决方案1】:

您可以命名选择器(例如 myPicker)并调用其焦点事件。请确保您在调用 myPicker.Focus() 时位于主线程上

【讨论】:

  • 我最初是通过在此处使用此答案使我的代码工作的。不幸的是,我刚刚注意到这已经停止工作。现在调用 picker.Focus() 似乎在 iOS 和 Windows Phone 上都不起作用(无法测试 Android)。有谁知道 Xamarin.Forms 中是否发生了任何更改以破坏此功能?
  • 您的“确保您在主线程上”这一点帮助我解决了显示警报后选择器不会出现的错误
  • 在 iOS 上,picker.Focus() 再次工作。也适用于Android。我没有在 UWP 上测试过。
【解决方案2】:

正如@Hutjepower 和this xamarin forums post 所提到的,以下代码应该工作:

Device.BeginInvokeOnMainThread(() =>
{
    if (yourPicker.IsFocused)
        yourPicker.Unfocus();

    yourPicker.Focus();
});

但是我发现它目前不适用于 Windows 8.1 和 UWP 应用程序,至少在最新的 2.3.4-pre1 版本的 Xamarin.Forms 中。不过,我还没有在任何手机/平板设备上测试过它。希望这个错误会在以后的版本中得到修复。我创建了a bug report for this problem

【讨论】:

    【解决方案3】:

    很遗憾没有;选择器的内部工作几乎完全在渲染器中,不通过 API 公开。

    【讨论】:

    • Picker 只是我所知道的带有点击手势的标签。还有一个公开的焦点事件。
    猜你喜欢
    • 2021-10-09
    • 2018-09-23
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    相关资源
    最近更新 更多