2017-01-30 2 views
1

с использованием Xamarin форм (ПКЛ)Выбор Название цвета неизменен

создания 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> 

Почему TextColor из Title черного даже жестко я явно установить его на белый в XAML?

ответ

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

Смежные вопросы