2017-01-30 91 views
1

使用xamarin形式(PCL)选择器标题颜色是不可改变的

创建选择器

<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> 

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

回答

8

说明

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

这不仅仅是一个Xamarin.Forms问题;这是iOS和Android做出的设计决定。选取器标题不是列表中的项目,并且不能由用户选择。 iOS和Android已经决定选择器标题必须始终为灰色,以向用户指示列表中没有项目已被选中。

解决

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

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

然后,将事件处理程序添加到Picker.SelectedIndex以防止用户选择标题。它将检查用户是否选择了Picker.Items(又名我们的标题)中的第一项,并且如果true自动将Picker.SelectedIndex更改为1

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); 
     } 
    } 
} 

enter image description here