Xamarin表单:如何在一个班轮代码中设置所有标签样式?

时间:2018-03-17 08:44:17

标签: c# xamarin.forms

所以我有一个包含多个Label的XF应用程序。我希望能够以编程方式更改我的所有标签FontStyle,具体取决于一行中的平台,如下所示,而不是逐个列出标签的名称。

if(Device.RuntimePlatform == Device.Android) {
    label.Style = Device.Styles.ListItemDetailTextStyle;
} else if(Device.RuntimePlatform == Device.iOS){
    label.Style = Device.Styles.ListItemTextStyle;
}

这可能吗?

2 个答案:

答案 0 :(得分:1)

您应该在App.xaml文件中设置样式。我需要为应用程序中的所有标签设置默认字体(包括从Label派生的新类)

 <Style ApplyToDerivedTypes="true" TargetType="Label">
  <Style.Triggers>
   <Trigger TargetType="Label" Property="FontAttributes" Value="None">
    <Setter Property="FontFamily" Value="{StaticResource MainFontFamily}" />
   </Trigger>
   <Trigger TargetType="Label" Property="FontAttributes" Value="Bold">
    <Setter Property="FontFamily" Value="{StaticResource MainFontFamilyBold}" />
   </Trigger>
  </Style.Triggers>
  <Setter Property="TextColor" Value="Black" />
 </Style>

并设置类似

的字体
 <OnPlatform x:Key="MainFontFamily" x:TypeArguments="x:String">
  <On Platform="Android">font_file_name.ttf#Font Name</On>
  <On Platform="iOS">Font Name</On>
 </OnPlatform>

您可以在here中了解有关样式的更多内容

答案 1 :(得分:0)

替代选项只是扩展Label

public class MyLabel : Label
{
    public MyLabel()
    {
        if (Device.RuntimePlatform == Device.Android)
        {
            Style = Device.Styles.ListItemDetailTextStyle;
        }
        else if (Device.RuntimePlatform == Device.iOS)
        {
            Style = Device.Styles.ListItemTextStyle;
        }
    }
}

P.S。:official documentation很好地涵盖了样式。