触发Xamarin.Forms Picker

Lar*_*ars 15 xamarin.forms

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

我想在选择器旁边有一个按钮,表示选择器是一个可点击的"下拉列表".但是,如何在单击按钮时打开选取器?

Hut*_*wer 10

您可以为选择器命名(例如myPicker)并调用其Focus事件.在调用myPicker.Focus()时确保你在主线程上

  • 我最初通过在此处使用此答案来使代码正常工作。不幸的是,我刚刚注意到它已经停止工作。现在,调用picker.Focus()似乎在iOS和Windows Phone上都无效(无法测试Android)。有人知道Xamarin.Forms中是否有任何更改破坏了此功能? (2认同)
  • 在 iOS 上,“picker.Focus()”再次正常工作。也适用于 Android。我还没有在 UWP 上测试过。 (2认同)

dea*_*dog 7

正如@Hutjepower和此xamarin论坛中提到的那样,以下代码应该有效:

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

    yourPicker.Focus();
});
Run Code Online (Sandbox Code Playgroud)

但是,我发现它当前在Windows 8.1和UWP应用程序上不起作用,至少在最新的2.3.4-pre1版本的Xamarin.Forms中不起作用。不过,我尚未在任何手机/平板电脑设备上对其进行测试。希望此错误将在以后的版本中得到修复。我已经为此问题创建了一个错误报告