C# 如何在Xamarin.forms中复制标签的viewbox行为?

C# 如何在Xamarin.forms中复制标签的viewbox行为?,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,我想将我的WPF应用程序重写为Xamarin.forms,但我一直无法将标签扩展到最大可用空间 在WPF中,我可以简单地执行以下操作: <Viewbox Grid.ColumnSpan="2" Grid.RowSpan="3" HorizontalAlignment="Center" VerticalAlignment="Center"> <Label Width="auto" Height="auto" HorizontalAl

我想将我的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中的viewbox内部标签类似的行为?

xamarin中没有标准的viewbox,因此简短的回答是:否


我发现至少有一个第三方实现:但我不能保证它,因为我没有使用过它。

我提出了一个非常简单的解决方案:

XAML:

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

<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);
    }
}