所以我有一个包含多个Label
的XF应用程序。我希望能够以编程方式更改我的所有标签FontStyle
,具体取决于一行中的平台,如下所示,而不是逐个列出标签的名称。
if(Device.RuntimePlatform == Device.Android) {
label.Style = Device.Styles.ListItemDetailTextStyle;
} else if(Device.RuntimePlatform == Device.iOS){
label.Style = Device.Styles.ListItemTextStyle;
}
这可能吗?
答案 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很好地涵盖了样式。