【发布时间】: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 上特别是因为我在很多情况下发现 HorizontalText/VerticalTextAlignment 在动态更新的事物上并不总是表现正确。我还注意到这个问题在 Forms 2.3.4 中似乎更糟,所以大多数时候我只是切换到 Horizontal/VerticalOptions,即使它们对性能的要求更高。
标签: xamarin xamarin.forms