自定义字体Xamarin.Forms?

时间:2015-10-16 10:48:23

标签: fonts xamarin xamarin.android xamarin.forms xamarin-studio

我只是在Xamarin.Forms中定制字体。 我想在整个应用程序中设置自定义字体。 我阅读了许多关于在Xamarin.Forms中定制字体的注释,文章等,但它们只显示了如何将字体更改为某些控件,如标签,按钮等。

我想将自定义字体设置为不具有字体属性的控件(例如Picker)。

是否可以这样做。

如何自定义应用中使用的每种字体?

1 个答案:

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