C# UIPickerView的自定义渲染器

C# UIPickerView的自定义渲染器,c#,xamarin,xamarin.forms,custom-renderer,C#,Xamarin,Xamarin.forms,Custom Renderer,可以在XAML中定义的位置使UIPickerView始终可见 此控件的标准行为仅在单击Title属性时显示绑定列表,然后从屏幕底部(iOS)或弹出窗口(Android)显示包含列表作为内容的小部件 我想让它从一开始就在定义它的地方可见(而不是在小部件中)。在picker对象中没有类似于Position的东西 protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) {

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

此控件的标准行为仅在单击
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;
        }
    }
protected override void OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
列表名称=新列表()
{
“测试”,
“测试2”
};
if(控件!=null)
{
var picker=(UIPickerView)this.Control.InputView;
picker.ShowSelectionIndicator=true;
}
}

我解决了这个问题,并在上提供了一个示例项目存储库

示例代码:

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

它基于
CustomRenderer
,仅在iOS上工作,因为
UIPickerView
是一个本机iOS控件