xamarin / Xamarin.Forms

Xamarin.Forms is no longer supported. Migrate your apps to .NET MAUI.
https://aka.ms/xamarin-upgrade
Other
5.62k stars 1.87k forks source link

[Bug] Can not assign a NamedSize variable to a FontSize property #13626

Open Tommigun1980 opened 3 years ago

Tommigun1980 commented 3 years ago

Description

Define a named base font size as a variable in XAML. Below are the two ways I could think of:

<NamedSize x:Key="BaseFontSize1">Default</NamedSize>
<x:Int32 x:Key="BaseFontSize2">Default</x:Int32> <!-- wrong type but compiles fine -->

Use it in a style, such as:

<Style
      TargetType="Label"
      ApplyToDerivedTypes="True">
      <Setter
            Property="FontSize"
            Value="{StaticResource BaseFontSize1}" />
</Style>

Result: Using 'BaseFontSize1' seems to completely ignore the value. Using 'BaseFontSize2' seems to set font size to 0.

Use case: I want to define the base font size once and use in all appropriate base styles, by using named system font sizes.

Tested only on iOS.

Expected Behavior

It should be possible to use named font size constants in properties that accept NamedFontSize.

Actual Behavior

It doesn't seem to be possible to use named font size constants in properties that accept NamedFontSize.

Basic Information

Environment

Show/Hide Visual Studio info ``` === Visual Studio Community 2019 for Mac (Preview) === Version 8.9 Preview (8.9 build 1451) Installation UUID: e8ffd2c1-2d62-4985-8519-ce82f983eaf2 GTK+ 2.24.23 (Raleigh theme) Xamarin.Mac 6.18.0.23 (d16-6 / 088c73638) Package version: 612000113 === Mono Framework MDK === Runtime: Mono 6.12.0.113 (2020-02/4fdfb5b1fd5) (64-bit) Package version: 612000113 === Xamarin Designer === Version: 16.9.0.266 Hash: c4842c761 Branch: remotes/origin/c4842c761b9b6a95407f72278ca7fb42f8f7fdf0 Build date: 2021-01-07 06:17:08 UTC === Roslyn (Language Service) === 3.9.0-3.20619.14+df59a33fd9beff9790e01a2a1ab21e4a1e6921b3 === NuGet === Version: 5.8.0.6860 === .NET Core SDK === SDK: /usr/local/share/dotnet/sdk/5.0.102/Sdks SDK Versions: 5.0.102 5.0.101 5.0.100 3.1.405 3.1.404 3.1.403 MSBuild SDKs: /Applications/Visual Studio.app/Contents/Resources/lib/monodevelop/bin/MSBuild/Current/bin/Sdks === .NET Core Runtime === Runtime: /usr/local/share/dotnet/dotnet Runtime Versions: 5.0.2 5.0.1 5.0.0 3.1.11 3.1.10 3.1.9 === .NET Core 3.1 SDK === SDK: 3.1.405 === Xamarin.Profiler === Version: 1.6.15.68 Location: /Applications/Xamarin Profiler.app/Contents/MacOS/Xamarin Profiler === Updater === Version: 11 === Apple Developer Tools === Xcode 12.4 (17801) Build 12D4e === Xamarin.Mac === Xamarin.Mac not installed. Can't find /Library/Frameworks/Xamarin.Mac.framework/Versions/Current/Version. === Xamarin.iOS === Version: 14.9.0.27 (Visual Studio Community) Hash: f4c9327fa Branch: main Build date: 2020-11-19 10:57:31-0500 === Xamarin.Android === Version: 11.2.0.0 (Visual Studio Community) Commit: xamarin-android/d16-9/f908d16 Android SDK: /Users/tommikiviniemi/Library/Developer/Xamarin/android-sdk-macosx Supported Android versions: None installed SDK Tools Version: 26.1.1 SDK Platform Tools Version: 30.0.4 SDK Build Tools Version: 30.0.2 Build Information: Mono: 5e9cb6d Java.Interop: xamarin/java.interop/d16-9@1d382be ProGuard: Guardsquare/proguard/v7.0.1@912d149 SQLite: xamarin/sqlite/3.32.2@cfe06e0 Xamarin.Android Tools: xamarin/xamarin-android-tools/main@ad80a42 === Microsoft OpenJDK for Mobile === Java SDK: /Users/tommikiviniemi/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25 1.8.0-25 Android Designer EPL code available here: https://github.com/xamarin/AndroidDesigner.EPL === Android SDK Manager === Version: 16.9.0.21 Hash: 57e40ba Branch: remotes/origin/main Build date: 2021-01-08 01:57:14 UTC === Android Device Manager === Version: 16.9.0.14 Hash: 0fdccda Branch: remotes/origin/main Build date: 2021-01-08 01:57:36 UTC === Build Information === Release ID: 809001451 Git revision: cfd15313a6388ef8dada0182e22a058131c46f9d Build date: 2021-01-15 08:42:21-05 Build branch: release-8.9 Xamarin extensions: cfd15313a6388ef8dada0182e22a058131c46f9d === Operating System === Mac OS X 10.16.0 Darwin 20.2.0 Darwin Kernel Version 20.2.0 Wed Dec 2 20:39:59 PST 2020 root:xnu-7195.60.75~1/RELEASE_X86_64 x86_64 ```

Workaround

Don't use named styles, use something like this instead:

<OnPlatform
      x:Key="BaseFontSize"
      x:TypeArguments="x:Double">
      <OnPlatform.iOS>16</OnPlatform.iOS>
      <OnPlatform.Android>14</OnPlatform.Android>
</OnPlatform>

... but this leads to other problems such as https://github.com/xamarin/Xamarin.Forms/issues/13628.

StephaneDelcroix commented 3 years ago

I get what you mean, could you please correct the title of the issue, as there is no "Binding" involved here

Tommigun1980 commented 3 years ago

I get what you mean, could you please correct the title of the issue, as there is no "Binding" involved here

Sure. I didn't mean 'bind' as in a Xamarin.Forms binding but I understand why the title is misleading!

rachelkang commented 3 years ago

Hi, @Tommigun1980 - thanks for sharing! I'm able to repro on both Android and iOS Issue13626.zip

Tommigun1980 commented 3 years ago

Hi, @Tommigun1980 - thanks for sharing! I'm able to repro on both Android and iOS Issue13626.zip

You are most welcome!