以我Xamarin窗体应用程序我有标签:标签窗体
<Label Text="{Binding Number}" HorizontalTextAlignment ="Center">
在视图模型:
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的标签正确居中。
从MainPage,可以PushAsync SecondPage。从第二页“NUMBER_CHANGED”也可以被触发。触发它并返回到MainPage后,数字被更新,包含它的标签具有适当的值,但不是居中而是左对齐。
这是Xamarin UI错误吗?有没有解决方法?我需要以某种方式告诉标签刷新它的位置。我希望标签始终居中。我不知道为什么在刷新内容后左对齐。
如果您在XAML中添加了'XAlign ='Center'',这是否有所作为? –
您可能希望将您的标签包裹在STACKLAYOUT中,并强制其通过应用宽度居中,而不是尝试对齐单个标签 – SergioAMG
这是因为我在多次发现HorizontalText/VerticalTextAlignment时没有特别指定对于动态更新的东西总是表现正确。我也注意到这个问题在Forms 2.3.4中似乎更糟糕,所以大多数时候我只是转换到了Horizontal/VerticalOptions,即使它们的性能稍强一点。 – Nick