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 控件。
是否可以使 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 控件。