2017-01-30 85 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