如何在 Avalonia UI 中专门针对 Android 版本的应用程序设置 FontSize?

问题描述 投票:0回答:1

我正在使用 Avalonia UI Community Toolkit 编写一个跨平台应用程序。结果我的一个 TextBlocks 在手机上启动时不适合屏幕。如何为此 TextBlock 设置 FontSize 是专门针对 android 版本的。例如,对于桌面版本,该值为 24,对于 Android 版本,该值为 20

我尝试使用 ChatGPT 执行此操作,但没有任何效果

这是一个例子

axaml 标记


  <Border Grid.Row="0" Background="#2576f7" Height="28" MaxHeight="28">
  <Grid>
  <Button Background="Transparent" HorizontalAlignment="Left" Content="Back" FontFamily="Arial" FontSize="16" FontWeight="Bold" Command="{Binding NavigateToSelectItemMorphologyTestPageCommand}">
  <Button.Styles>
  <Style Selector="Button:pointerover /template/ ContentPresenter">
  <Setter Property="Background" Value="Transparent"/>
  </Style>
  </Button.Styles>
  </Button>
  <TextBlock x:Name="HeaderText" Text="long text that doesn't fit on the page " FontFamily="Arial" FontSize="24" FontWeight="Bold" TextAlignment="Center"/>
  </Grid>
  </Border>

and just the text size of 24 does not fit on the page on the Telophane screen, but everything is fine on the computer screen.

This is what ChatGPT advised me.

...ViewModel


[ObservableProperty]
 private bool isAndroid;

 public ...ViewModel()
 {
 IsAndroid = RuntimeInformation.IsOSPlatform(OSPlatform.Create("ANDROID"));
 }

and change the markup

<UserControl.Resources>
 <Style x:Key="HeaderTextStyle" TargetType="TextBlock">
 <Setter Property="FontFamily" Value="Arial" />
 <Setter Property="FontSize" Value="24" />
 <Style.Triggers>
 <DataTrigger Binding="{Binding IsAndroid}" Value="True">
 <Setter Property="FontSize" Value="20" />
 </DataTrigger>
 </Style.Triggers>
 </Style>
 </UserControl.Resources>

 <Grid Background="#ffdadada">
 <ScrollViewer VerticalScrollBarVisibility="Visible">
 <Grid>
 <Grid.RowDefinitions>
 <RowDefinition Height="Auto"/>
 <RowDefinition Height="*"/>
 </Grid.RowDefinitions>

 <Border Grid.Row="0" Background="#2576f7" Height="28" MaxHeight="28">
 <Grid>
 <Button Background="Transparent" HorizontalAlignment="Left" Content="Back" FontFamily="Arial" FontSize="16" FontWeight="Bold" Command="{Binding NavigateToSelectItemTestRussianPageCommand}">
 <Button.Styles>
 <Style Selector="Button:pointerover /template/ ContentPresenter">
 <Setter Property="Background" Value="Transparent"/>
 </Style>
 </Button.Styles>
 </Button>
 <TextBlock Text="long text that doesn't fit on the page" FontWeight="Bold" TextAlignment="Center" Style="{StaticResource HeaderTextStyle}"/>
 </Grid>
 </Border>

but there were a lot of errors
1.
Error (active) AXN0002 XamlX.XamlParseException: Unable to resolve type DataTrigger from namespace https://github.com/avaloniaui Line 14, position 6.
2. Error (active) CS0103 The name 'InitializeComponent' does not exist in the current context

but I couldn’t fix them and I also couldn’t find a way to do it differently

对不起我的英语,因为它不是我的母语

c# .net xaml avaloniaui avalonia
1个回答
0
投票

您可以将元素覆盖到

ViewBox
中,如果视图边界过于受限 - 视图框将缩小其内容。

© www.soinside.com 2019 - 2024. All rights reserved.