2017-01-30 1 views
1

Formen mit Xamarin (PCL)Picker Titelfarbe ist unveränderlich

Picker Schaffung

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

Warum ist die TextColor der Title schwarz sogar hart ich es ausdrücklich in XAML auf weiß gesetzt?

Antwort

8

Erklärung

Xamarin.Forms nicht zulässt, dass die Farbe von Picker.Title einzustellen.

Dies ist nicht nur ein Xamarin.Forms-Problem; Es ist eine Designentscheidung, die von iOS und Android getroffen wurde. Der Auswahltitel ist kein Element in der Liste und kann vom Benutzer nicht ausgewählt werden. iOS und Android haben diktiert, dass der Titel des Auswahlfensters immer grau sein muss, um dem Benutzer anzuzeigen, dass kein Element in der Liste ausgewählt wurde.

Arbeit um

den Titeltext als erster Punkt in Picker.Items hinzufügen.

Setzen Sie dann die anfängliche Picker.SelectedIndex auf 0. Dies zeigt das erste Element in Picker.Items (alias unser Titel) auf dem Bildschirm standardmäßig beim Laden der Seite.

Fügen Sie dann einen Ereignishandler zu Picker.SelectedIndex hinzu, um zu verhindern, dass der Benutzer den Titel auswählt. Es wird überprüft, ob der Benutzer das erste Element in Picker.Items (aka unser Titel) ausgewählt hat, und wenn true automatisch Picker.SelectedIndex zu 1 ändern.

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