为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Xamarin.forms 中复制标签的视图框行为?

如何在 Xamarin.forms 中复制标签的视图框行为?

C#
繁星点点滴滴 2021-10-09 10:39:27
我想将我的 WPF 应用程序重写为 Xamarin.forms,但我在将标签缩放到最大可用空间时遇到了困难。在 WPF 我可以简单地做:<Viewbox Grid.ColumnSpan="2" Grid.RowSpan="3"         HorizontalAlignment="Center" VerticalAlignment="Center">    <Label Width="auto" Height="auto"           HorizontalAlignment="Center" VerticalAlignment="Center"           Content="ABCD"/></Viewbox>我试过这样的东西,但它只扩展标签的背景而不是文本<Label Grid.ColumnSpan="2" Grid.RowSpan="3"       HorizontalOptions="FillAndExpand"       VerticalOptions="FillAndExpand"       Text="ABCD"/>xamarin.forms 是否提供了与 WPF 视图框内的标签类似的行为?
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

我想出了这个非常天真的解决方案:


XAML:


<BoxView x:Name="measureViewBox"

         Grid.RowSpan="3" Grid.ColumnSpan="2"

         HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"

         Opacity="0"/>

<Label x:Name="myLabel" 

       Grid.RowSpan="3" Grid.ColumnSpan="2"

       HorizontalTextAlignment="Center" VerticalTextAlignment="Center"

       HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"

       Text="ABCD">

后面的代码:


private void ContentView_SizeChanged(object sender, EventArgs e)

{

    double fontSize = measureViewBox.Width;

    myLabel.FontSize = fontSize;

    SizeRequest measurement = myLabel.Measure(double.PositiveInfinity, double.PositiveInfinity);

    while (measurement.Request.Width >= measureViewBox.Width)

    {

        fontSize -= 2;

        myLabel.FontSize = fontSize;

        measurement = myLabel.Measure(double.PositiveInfinity, double.PositiveInfinity);

    }

}

当我在 UWP 中调整窗口大小时,它非常滞后,但至少现在,它完成了工作。我将在未来尝试改进这一点,因此任何建议将不胜感激。


查看完整回答
反对 回复 2021-10-09
  • 2 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信