如何在 Xamarin MAC 平台中更改选择器背景颜色

How to change Picker background Color in Xamarin MAC Platform

将 Xamarin 库和 MAC OS 更新到最新系统后,选择器背景颜色和 MAC 选择器中 selected/focused 项目的颜色面临问题平台在我的 visual studio 2017.

填充了多个值的选择器

打开选择器时无法设置背景颜色,而且选中的项目也因其颜色不可见

如何设置该选择器的背景颜色和该选择器的 focused/selected 项目的颜色?

要更改 iOS 的所有 Picker 项目的 BackGroundColor,您需要使用自定义渲染器。

您的 Picker 在共享项目中

<StackLayout>
    <Picker x:Name="picCities" ></Picker>
</StackLayout>

在您的 ContentPage cs 文件中将 ItemsSource 分配给 Picker

public MainPage()
{
    InitializeComponent();
    picCities.ItemsSource = new List<string> { "Hyderabad", "Bhopal", "Indore", "Jabalpur", "Mumbai", "Ahmedabad" };
    picCities.SelectedIndex = 0;
}

现在在您的 iOS 项目中添加一个 .cs 文件名 PickerCustomRenderer 并添加此代码

[assembly: ExportRendererAttribute(typeof(Picker), typeof(PickerCustomRenderer))]
namespace picker.iOS
{
    public class PickerCustomRenderer : PickerRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
        {
            base.OnElementChanged(e);
            UITextField textField = Control;
            UIPickerView pickerView = textField.InputView as UIPickerView;
            pickerView.BackgroundColor = UIColor.Red;
        }
    }
}

输出

这似乎是由 Mojave 使用的新主题引起的。

解决这个问题的一种方法是设置一个在浅色和深色上都可见的值,对我来说它适用于绿色。

将此添加到您的 XAML 应该就足够了

<Picker.TextColor>
    <OnPlatform x:TypeArguments="Color">
        <On Platform="macOS" Value="Green"/>
    </OnPlatform>
</Picker.TextColor>

仅对您的 MacOs 项目进行更改,其他项目保持原样。

<Picker HorizontalOptions="CenterAndExpand" 
        VerticalOptions="CenterAndExpand">
    <Picker.Items>
        <x:String>Dell</x:String>
        <x:String>HP</x:String>
        <x:String>Mac</x:String>
        <x:String>Asus</x:String>
        <x:String>Lenovo</x:String>
        <x:String>Acer</x:String>
        <x:String>Micrsoft</x:String>
    </Picker.Items>
    <Picker.TextColor>
        <OnPlatform x:TypeArguments="Color">
            <On Platform="macOS" Value="Green"/>
        </OnPlatform>
    </Picker.TextColor>
</Picker>

注意:TextColor只会影响所选项目的文本颜色。

希望对您有所帮助。-