我想将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的视图框内标签相似的行为?
答案 0 :(得分:1)
Xamarin中没有标准的Viewbox,因此简短的答案是:否。
我发现至少有一个第三方实现:https://forums.xamarin.com/discussion/92662/viewbox-implementation-for-xamarin-forms,但由于我没有使用过,因此无法担保。
答案 1 :(得分:0)
我想出了一个非常幼稚的解决方案:
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中调整窗口大小时,它非常滞后,但至少目前为止,它可以完成工作。我将在以后尝试改善此问题,因此任何建议将不胜感激。