以我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