0

Я просто настраиваю шрифты в Xamarin.Forms. Я хочу установить пользовательские шрифты в моем приложении. Я прочитал много заметок, статей и т. Д., Определяющих настройку шрифта в Xamarin.Forms, но они показывают только, как изменить шрифты на некоторые элементы управления, такие как ярлык, кнопка и т. Д.Пользовательские шрифты Xamarin.Forms?

Я хочу установить пользовательские шрифты для элементов управления, которые не имеют свойства шрифта (например, Picker).

Возможно ли это.

Как я могу настроить каждый шрифт, используемый в моем приложении?

+1

Как сообщества Xamarin.Forms знаем теперь, что если он не определен, то ваш Гото Ответ - это индивидуальные средства визуализации. К сожалению, все, что я могу предоставить. С другой стороны, я бы сказал, что не рекомендуется менять шрифт по умолчанию. Google/Apple потратила много денег/времени на исследование лучшего шрифта. – Johan

+0

@Johan: Это правильно, но в моем случае я работаю над специальным приложением, которое должно быть в одиночестве в своем уникальном дизайне и стиле в соответствии с характером соответствующего приложения, а также определяет существование этого в рынок. И мой клиент строго соблюдает эти условия. – Vaikesh

+0

Правильно, что @Johan говорит: сделайте это через CustomRenderers для всех элементов управления, которые не позволяют вам настраивать собственный шрифт напрямую. Но, может быть, лучше использовать собственные средства для создания пользовательских интерфейсов Xamarin.Android и Xamarin.iOS, потому что у вас нет таких ограничений для настройки. – Wosi

ответ

1

На элементах управления, которые не имеют свойств шрифта, вам необходимо использовать собственные средства визуализации для каждой платформы. К сожалению, нет другого способа, если Xamarin Forms не предоставит собственность.

Для сборщика на WinPhone, например, в CustomRenderer

protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) 
     { 
      base.OnElementPropertyChanged(sender, e); 

      switch (e.PropertyName) 
      { 
       case "Renderer": 

        ((ListPicker)((System.Windows.Controls.Grid)this.Control).Children[0]).FullModeItemTemplate = (System.Windows.DataTemplate)App.Current.Resources["PickerItemTemplate"]; 
        ((ListPicker)((System.Windows.Controls.Grid)this.Control).Children[0]).FullModeItemTemplate = (System.Windows.DataTemplate)App.Current.Resources["ListItemTemplate"]; 

        break; 
      } 
     } 

С помощью этих двух ресурсов

<DataTemplate x:Key="PickerItemTemplate"> 
     <StackPanel MinWidth="1000"> 
      <TextBlock Text="{Binding Data}" Opacity="{Binding Opacity}" /> 
     </StackPanel> 
    </DataTemplate> 
    <DataTemplate x:Key="ListItemTemplate"> 
     <StackPanel Margin="0,15,0,15"> 
      <TextBlock Text="{Binding Data}" FontSize="22" TextWrapping="Wrap"></TextBlock> 
     </StackPanel> 
    </DataTemplate> 
Смежные вопросы