UIPickerView 的自定义渲染器

CustomRenderer for UIPickerView

是否可以使 UIPickerView 在 XAML 中定义的位置始终可见?

此控件的标准行为仅在我们单击 Title 属性 时显示绑定列表,然后从屏幕底部 (iOS) 或弹出窗口 (Android) 正在显示一个包含列表作为内容的小部件。

我想让它从一开始就在定义它的地方(而不是在小部件中)可见。 picker 对象中没有类似 Position 的东西。

protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
    {
        base.OnElementChanged(e);

        List<string> names = new List<string>()
        {
            "test",
            "test 2"
        };

        if (Control != null)
        {
            var picker = (UIPickerView)this.Control.InputView;
            picker.ShowSelectionIndicator = true;
        }
    }

我解决了这个问题并在 GitHub.

上提供了一个示例项目存储库

示例代码:

<local:CustomObjectPicker
            ItemsSource="{Binding ObjectList}"
            SelectedItem="{Binding SelectedItem}"
            IsTransparent="true"
            TextColor="Blue"
            />

它基于 CustomRenderer,仅适用于 iOS,因为 UIPickerView 是本机 iOS 控件。