我在主 Styles.xaml 中定义了 x:Double 类型的 OnPlatform 样式,我想使用它来定义每个平台的不同字体大小。问题是当我想通过特定...
我在主 Styles.xaml 中定义了一种 OnPlatform
type 样式 x:Double
,我想用它来定义每个平台的不同字体大小。问题是当我想通过指定标签的字体大小调用资源时, x:Key
标签的字体大小不会改变。
我的 Styles.xaml 文件:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controls="clr-namespace:ClientApp.Source.Controls"
xmlns:views="clr-namespace:ClientApp.Source.Views">
<OnPlatform x:Key="TinyFontSize" x:TypeArguments="x:Double">
<On Platform="Default" Value="12" />
</OnPlatform>
...
在 ContentPage
我创建了以下标签:
...
<Label FontSize="{StaticResource TinyFontSize}" Text="Test" WidthRequest="200"/>
...
但是标签的字体大小不会变为 12 号,只有当我 {StaticResource TinyFontSize}
用数字值替换时才会变为 12 号。
当我在 Styles.xaml 文件中创建以下资源时:
<x:Double x:Key="SmallFontSize">13</x:Double>
它可以正常工作,但是我无法从主 Styles.xaml 中根据操作系统更改值。
我在 Github 的 eShop 存储库中找到了示例: https://github.com/dotnet/eShop/blob/main/src/ClientApp/Views/CheckoutView.xaml .
但即使我签出这个项目并运行 ClientApp,它也不起作用......
使用:
净8.0
Microsoft.Maui.Controls(8.0.21)
官方文档指出, OnPlatform 类定义了一个 Default 属性,可以将其设置为一个将应用于所有平台的值 .
但是我测试发现 <On Platform="Default">
,在Android、iOS、Windows三个平台上设置字体大小也不起作用。你可以把这个问题发到 MAUI Github .
当我设置代码: <On Platform="Andorid">
和时 <On Platform="iOS">
,我可以分别在Android平台和iOS平台上成功更改字体大小。
因此,作为一种解决方法,如果您只是在 Android 和 iOS 平台上运行 MAUI 程序,则可以设计如下代码 styles.xaml
:
<ResourceDictionary
...>
<OnPlatform x:Key="TinyFontSize" x:TypeArguments="x:Double">
<On Platform="Android" Value="12" />
<On Platform="iOS" Value="12" />
</OnPlatform>
...