Xamarin.forms 触发Xamarin。窗体选择器

Xamarin.forms 触发Xamarin。窗体选择器,xamarin.forms,Xamarin.forms,我可以通过编程触发选择器吗 我想在选择器旁边有一个按钮,指示选择器是可点击的“下拉列表”。但是当按钮被点击时,我怎么能打开选择器呢 不幸的是没有;选择器的内部工作几乎完全在渲染器中,不通过API公开。您可以命名选择器(例如myPicker)并调用其焦点事件。请确保在调用myPicker.Focus()时,您处于主线程上。As@Hutjepower并提到,以下代码应该可以工作: 但是,我发现它目前不适用于Windows 8.1和UWP应用程序,至少在最新的2.3.4-pre1版本的Xamarin.

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


我想在选择器旁边有一个按钮,指示选择器是可点击的“下拉列表”。但是当按钮被点击时,我怎么能打开选择器呢

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

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

As@Hutjepower并提到,以下代码应该可以工作:


但是,我发现它目前不适用于Windows 8.1和UWP应用程序,至少在最新的2.3.4-pre1版本的Xamarin.Forms中是如此。不过,我还没有在任何手机/平板电脑设备上测试过它。希望这个bug能在以后的版本中修复。我已经创建了。

我最初是通过在这里使用这个答案来运行代码的。不幸的是,我刚刚注意到这已经停止工作。现在,在iOS和Windows Phone上调用picker.Focus()似乎什么都做不了(无法测试Android)。有人知道Xamarin.Forms中是否发生了任何更改以破坏此功能吗?您的“确保您在主线程上”这一点帮助我解决了一个错误,即在iOS上显示Alerton后picker不会出现,
picker.Focus()
再次工作。也适用于Android。我还没有在UWP上测试过。据我所知,Picker只是一个带有点击手势的标签。另外还有一个焦点事件是public.BTW,如果Picker类不能提供您想要的内容,可以在示例中的“操作表”中看到一种更灵活的方法。通过StandardViewModel.CreateActionSheetCommand中的描述性配置对象定义。在UWP上,这是基于。在iOS和Android上,构建了适当的本机控件。。。。我不知道为什么nuget不在其上构建—这样做会更容易生成定制的跨平台对话框。我提到了上面的UWP实现,因为它看起来像是可以使用X-Forms视图和contentview的东西。请参见平台/UWP下的
userdialogsiml
Device.BeginInvokeOnMainThread(() =>
{
    if (yourPicker.IsFocused)
        yourPicker.Unfocus();

    yourPicker.Focus();
});