【问题标题】:How to replicate viewbox behaviour for label in Xamarin.forms?如何在 Xamarin.forms 中复制标签的视图框行为?
【发布时间】:2018-07-15 17:27:36
【问题描述】:

我想将我的 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 中视图框内标签的行为?

【问题讨论】:

    标签: c# xaml xamarin xamarin.forms


    【解决方案1】:

    Xamarin 中没有标准的 Viewbox,所以简短的回答是:没有。

    我发现了至少一个 3rd 方实现:https://forums.xamarin.com/discussion/92662/viewbox-implementation-for-xamarin-forms,但我不能保证它,因为我没有使用它。

    【讨论】:

      【解决方案2】:

      我想出了这个非常幼稚的解决方案:

      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 中调整窗口大小时,它非常滞后,但至少目前,它完成了工作。我会在未来尝试改进这一点,所以任何建议都将不胜感激。

      【讨论】:

        猜你喜欢
        • 2017-12-08
        • 1970-01-01
        • 2017-06-14
        • 2012-03-11
        • 2018-02-10
        • 2018-06-23
        • 2019-11-03
        • 1970-01-01
        • 2018-06-18
        相关资源
        最近更新 更多