OnPlatform control of type x:Double is not accessible as font size
Description
I defined an OnPlatform class of type x:Double in my main Styles.xaml which I want to use for defining different font sizes per platform. The problem is when I want to call the resource via the specified x:Key the font size of the label does not change.
Steps to Reproduce
My Styles.xaml file:
<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>
In a ContentPage I created following label:
<Label FontSize="{StaticResource TinyFontSize}" Text="Test" WidthRequest="200"/>
but the font size of the label does not change to size 12, only when I replace {StaticResource TinyFontSize} with a numeric value.
When I create following resource in the Styles.xaml file:
<x:Double x:Key="SmallFontSize">13</x:Double>
it would work fine but then I can not change the value depending on the operating system from the main Styles.xaml.
I found an example on Github in the eShop repository: https://github.com/dotnet/eShop/blob/main/src/ClientApp/Views/CheckoutView.xaml.
But even when I checkout this project and run the ClientApp it does not work...
Link to public reproduction project repository
https://github.com/dotnet/eShop/blob/main/src/ClientApp/Views/CheckoutView.xaml.
Version with bug
8.0.21 SR4.1
Is this a regression from previous behavior?
Not sure, did not test other versions
Last version that worked well
Unknown/Other
Affected platforms
iOS, Android, Windows
Affected platform versions
No response
Did you find any workaround?
No response
Relevant log output
No response
Hi I'm an AI powered bot that finds similar issues based off the issue title.
Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it. Thank you!
Open similar issues:
- On Platform="Default" not working (#22105), similarity score: 0.83
- OnPlatform in ResourceDictionary Source causes compile error (#19573), similarity score: 0.77
- OnIdiom not working when using as style resource (#10894), similarity score: 0.76
Closed similar issues:
- Error thrown when accessing resource values with OnPlatform from Resource Dictionary (#16494), similarity score: 0.77
- OnPlatform with Thickness breaks XAML Hot Reload (#6619), similarity score: 0.73
Note: You can give me feedback by thumbs upping or thumbs downing this comment.
Can repro this issue at Android/Windows platforms on the latest 17.10 preview 7 (8.0.40, 8.0.21, 8.0.3). https://github.com/dotnet/eShop/tree/main/src/ClientApp
I want to add something related with this but a bit different.
I have this label with this style:
<Label Text="My Label" Style="{StaticResource FontSizeH4}" />
If I define the style like bellow it works in WinUI but it will throw exception error in Android:
<OnPlatform x:Key="FontSizeH4" x:TypeArguments="x:Double"> <On Platform="iOS" Value="20" /> <On Platform="Android" Value="22" /> <On Platform="WinUI" Value="22" /> <On Platform="Default" Value="22" /> </OnPlatform>
The work arround to make it working on both platform is to define the style like this:
<Style TargetType="Label" x:Key="StyleLabelH4"> <Setter Property="FontSize" Value="{StaticResource FontSizeH4}" /> </Style>
which seems correct... but then should throw exception in WinUI too.