Picker标题颜色不可更改

Ahm*_*yed 4 c# xaml xamarin xamarin.forms

使用xamarin表格(pcl)

创建Picker

<Picker x:Name="Branches" 
  TextColor="White" Title="Click to choose Branch"
  Grid.Row="3" Grid.Column="1"
  SelectedIndex="{Binding Branches}">
    <Picker.Items>
        <x:String>Id</x:String>
        <x:String>Name</x:String>
    </Picker.Items>
</Picker>
Run Code Online (Sandbox Code Playgroud)

为什么TextColor在的Title黑色甚至强硬.我明确地将它设置为白色XAML?

Bra*_*ick 16

更新:Xamarin.Forms v3.6

Xamarin.Forms v3.6介绍Picker.TitleColor.

现在可以TitleColor直接设置Picker ,而无需解决方法.

XAML

TitleColor="Red"

<Picker x:Name="Branches" 
  Title="Click to choose Branch"
  TitleColor="Red"
  TextColor="White" 
  Grid.Row="3" 
  Grid.Column="1"
  SelectedIndex="{Binding Branches}">
    <Picker.Items>
        <x:String>Id</x:String>
        <x:String>Name</x:String>
    </Picker.Items>
</Picker>
Run Code Online (Sandbox Code Playgroud)

myPicker.TitleColor = Color.Red

var myPicker = new Picker
{
    TitleColor = Color.Red
};
Run Code Online (Sandbox Code Playgroud)

说明

Xamarin.Forms不允许您设置颜色Picker.Title.

解决

添加标题文本作为第一项Picker.Items.

然后,将初始值设置Picker.SelectedIndex为0.这将Picker.Items在页面加载时默认显示屏幕上的第一项(也就是我们的标题).

然后,添加一个事件处理程序以Picker.SelectedIndex防止用户选择标题.它将检查用户是否选择了第一项Picker.Items(也就是我们的标题),如果true自动更改Picker.SelectedIndex1.

using System;

using Xamarin.Forms;

namespace PickerTitleColor
{
    public class App : Application
    {
        public App()
        {
            var picker = new Picker();
            picker.Items.Add("Select an item");
            picker.Items.Add("Item1");
            picker.Items.Add("Item2");
            picker.Items.Add("Item3");
            picker.TextColor = Color.Red;
            picker.SelectedIndex = 0;

            picker.SelectedIndexChanged += (sender, e) => 
            {
                if (picker.SelectedIndex == 0)
                    picker.SelectedIndex = 1;
            };

            var content = new ContentPage
            {
                Title = "Custom Picker Title Color",
                Content = picker
            };

            MainPage = new NavigationPage(content);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述