Как изменить цвет фона выбора в MAC-платформе Xamarin
После обновления библиотеки Xamarin и MAC OS до последней системы возникла проблема в цвете Picker Фоновый цвет и цвет элемента, который выбран / сфокусирован в средстве выбора для MAC Platform в моей Visual Studio 2017.
Средство выбора, заполненное несколькими значениями
При открытии средства выбора не удается установить цвет фона, а выбранный элемент также не виден из-за его цвета.
Как я могу установить цвет фона этого средства выбора и цвет этого сфокусированного / выбранного элемента средства выбора?
2 ответа
Кажется, это связано с новой темой, используемой Мохаве.
Один из способов преодолеть эту проблему - установить значение, которое будет видно как на Светлом, так и на Темном цвете, для меня это сработало с Зеленым.
Добавление этого в ваш 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
будет влиять только на цвет текста выбранного элемента.
Надеюсь это поможет.-
Изменить 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;
}
}
}
Выход