我只是在Xamarin.Forms中定制字体。 我想在整个应用程序中设置自定义字体。 我阅读了许多关于在Xamarin.Forms中定制字体的注释,文章等,但它们只显示了如何将字体更改为某些控件,如标签,按钮等。
我想将自定义字体设置为不具有字体属性的控件(例如Picker)。
是否可以这样做。
如何自定义应用中使用的每种字体?
答案 0 :(得分: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>