【问题标题】:Label not centered after data change in Xamarin FormsXamarin Forms 中的数据更改后标签未居中
【发布时间】:2017-11-10 02:00:11
【问题描述】:

在我的 Xamarin Forms 应用程序中,我有标签:

<Label Text="{Binding Number}" HorizontalTextAlignment ="Center">

在 ViewModel 中:

private int _number;
public int Number
{
    get { return _number; }
    set { SetProperty(ref _number, value); }
}

收到消息后,我更新号码:

MessagingCenter.Subscribe<EmptyMessage>(this, "NUMBER_CHANGED", OnNumberChanged);

private async void OnNumberChanged(EmptyMessage emptyMessage)
{
    Number = ReadNumberFromDB();
}

所有这些都在 MainPage 上。当 MainPage 触发“NUMBER_CHANGED”消息时,UI 上的 Number 会更新,包含 Number 的标签正确居中

从MainPage,可以PushAsync SecondPage。从 SecondPage 也可以触发“NUMBER_CHANGED”。触发它并返回 MainPage 后,Number 被更新,包含它的标签具有适当的值,但不是居中,而是左对齐

这是 Xamarin UI 错误吗?有解决方法吗?我需要以某种方式告诉标签刷新它的位置。我希望标签始终居中。我不知道为什么刷新它的内容后它是左对齐的。

【问题讨论】:

  • 如果你在 XAML 中添加XAlign = "Center",有什么不同吗?
  • 您可能希望将您的标签包装在一个 STACKLAYOUT 中,在此您强制它在您的应用宽度中居中,而不是尝试对齐单个标签
  • 这是在 Android 上特别是因为我在很多情况下发现 Horizo​​ntalText/VerticalTextAlignment 在动态更新的事物上并不总是表现正确。我还注意到这个问题在 Forms 2.3.4 中似乎更糟,所以大多数时候我只是切换到 Horizo​​ntal/VerticalOptions,即使它们对性能的要求更高。

标签: xamarin xamarin.forms


【解决方案1】:

Horizo​​ntalTextAlignment 和 VerticalTextAlignment,在数据更改后不起作用是一个已知错误。 Bug 55359 详细介绍了 TabbedPage,但它出现在很多地方,例如 Bug 49311

解决方法是暂时使用 Horizo​​ntalOptions 或 VerticalOptions。

【讨论】:

    【解决方案2】:

    我最近遇到了这个问题。我只是创建了一个常量变量来跟踪需要更新 OnResume 的页面,并相应地重新分配了我的绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 2019-01-17
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      相关资源
      最近更新 更多