CustomRenderer для 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;
        }
    }

person Tomasz Kowalczyk    schedule 06.07.2016    source источник


Ответы (1)


Я решил эту проблему и сделал образец репозитория проекта доступным на GitHub.

Образец кода:

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

Он основан на CustomRenderer и работает только на iOS, поскольку UIPickerView — это родной элемент управления iOS.

person Tomasz Kowalczyk    schedule 07.07.2016