在 Xamarin.Forms 中具有两个带有数字的选择列的选择器

Posted

技术标签:

【中文标题】在 Xamarin.Forms 中具有两个带有数字的选择列的选择器【英文标题】:Picker with two selection columns with numbers in Xamarin.Forms 【发布时间】:2017-02-24 13:31:12 【问题描述】:

我需要在下图中做一个这样的选择器:

你看到的是一个 TimePicker,我拿它只是为了给你一个例子。我想要一个左边有大约 200 个数字,右边有 100 个的数字(例如)。如何在 Xamarin.Forms PCL 项目中执行此操作?

【问题讨论】:

【参考方案1】:

您将面临的第一个问题是您在此处看到的选取器控件是原生 ios 控件。 Xamarin.Forms TimePicker 本身基本上不是物理控件,而是在每个平台上转换为本机控件。这就是它在 android 和 UWP 设备上看起来不同的原因,因为它们提供了自己的选择器控件,如下图所示。

现在,如果您对看起来不同的控件感到满意,您可以使用custom renderers 修改每个本机控件,甚至替换它们以提供您需要的功能。我想我会为您概述入门的基本步骤:

    创建一个名为 CustomPicker 或其他名称的新 Xamarin.Forms 控件。 为每个平台创建自定义渲染器。 在 iOS 上,您可以使用 UIPickerView 并指定 numberOfComponents、numberOfRows 和数据源。 在 Android 上,您可能希望使用第 3 方控件,因为默认情况下,没有像 iOS 上那样的滚动选择器控件。 WheelPicker 看起来很有希望。 在 UWP 上,您可以使用 PickerFlyoutBase 解决问题。我对平台的了解有限,但您应该可以很容易地找到一些东西。

如您所见,让滚动选择器在每个平台上工作都需要付出相当大的努力。


编辑:您还可以查看本机嵌入,它允许您将本机控件嵌入到 Xamarin.Forms 应用的页面中。

Native Embedding

Embedding native controls into Xamarin.Forms

【讨论】:

【参考方案2】:

我们为 Xamarin.Forms(Android 和 iOS)开发了一个两列选择器。

示例: https://github.com/HorusSoftwareUY/MaterialDesignControlsPlugin#materialdoublepicker

截图: Android iOS

我们将此控件添加到 MaterialDesignControls NuGet (https://www.nuget.org/packages/Plugin.MaterialDesignControls/),您可以在其中找到具有材料设计外观的其他有趣控件。

欢迎投稿!

【讨论】:

以上是关于在 Xamarin.Forms 中具有两个带有数字的选择列的选择器的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms - 使用 Xamarin.Essentials 在两个坐标之间获取里程

Xamarin.forms如何在列表中显示彼此相邻的项目

Xamarin Forms Sharedpreferences 交叉

在 Xamarin Forms 中下载带有进度条的文件

Android 语音识别将数据传回 Xamarin Forms

适用于Xamarin Forms的Xamarin Firebase PhoneAuth