Как изменить цвет фона выбора в MAC-платформе Xamarin - PullRequest
0 голосов
/ 26 декабря 2018

После обновления библиотеки Xamarin и операционной системы MAC до последней системы возникла проблема в средстве выбора цвета фона и цвета элемента, выбранного / сфокусированного в средстве выбора для платформы MAC в моей визуальной студии 2017.

Средство выборазаполнены несколькими значениями

Here is the picture of Picker that is filled with multiple value

При открытии сборщик не может установить цвет фона, а выбранный элемент также не виден из-за егоcolor

On opening the picker can not able to set the background color and the item that is selected is also not visible because of its color.

Как я могу установить цвет фона этого средства выбора и цвет этого сфокусированного / выбранного элемента средства выбора?

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Это, кажется, вызвано новой темой, используемой Мохаве.

Один из способов преодолеть эту проблему - установить значение, которое будет отображаться как на Светлом, так и на Темном, для меня это сработало с Зеленым.

Добавление этого в ваш 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 повлияет только на цвет текста выбранного элемента.

Надеюсь, это поможет .-

0 голосов
/ 26 декабря 2018

Чтобы изменить BackGroundColor всех Picker элементов для iOS, вам нужно использовать пользовательский рендерер.

Ваш 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;
        }
    }
}

Вывод

enter image description here

...