簡體   English   中英

標簽文本未從ViewModel Xamarin表單更新

[英]Label Text not Updating from ViewModel Xamarin Forms

我正在嘗試獲取標簽文本以在我的應用程序前端更新。 目前,Im正在使用消息中心向視圖模型發送通知,並增加一個應在視圖標簽上更新的數字。 我正在使用Xamarin Forms和PCL。 我可以獲得在調試中注銷的號碼,因此我知道消息中心正在運行。 但是它沒有更新視圖。

相關的Xaml:

    <Label Text="{Binding counter}"

           Grid.Row="0"/>

后面的代碼:

 public partial class DriverDashboardView : ContentPage
{
    private DriverDashboardViewModel driverdashboardviewmodel;

    public DriverDashboardView()
    {

        InitializeComponent();

        this.Title = "Driver's Dashboard";
        BindingContext = driverdashboardviewmodel = new DriverDashboardViewModel();
        dataList.ItemTapped += DataList_ItemTapped;


    }

    private void DataList_ItemTapped(object sender, ItemTappedEventArgs e)
    {
        DisplayAlert("Route Information","Various Data","OK");
    }

    protected async override void OnAppearing()
    {
        base.OnAppearing();
        await driverdashboardviewmodel.GetLabelInfo();
    }

}

視圖模型:

 public class DriverDashboardViewModel:BaseViewModel,INotifyPropertyChanged
{

   private int messageCounter { get; set; }
   public string counter { get { return messageCounter.ToString(); }
                        set {
                            if (Equals(value, messageCounter)) return;
                            messageCounter = Convert.ToInt32(value);
                            OnPropertyChanged(nameof(counter));

                             } }


    public DriverDashboardViewModel()
    {

        MessagingCenter.Subscribe<App>((App)Application.Current, "Increase", (variable) => {

            messageCounter++;
        });

    }



    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this,
                new PropertyChangedEventArgs(propertyName));
    }
}

以及實現消息中心的相關部分:

Foregroundmessages.cs:

MessagingCenter.Send((App)Xamarin.Forms.Application.Current, "Increase");

如前所述,消息傳遞中心工作正常。 它可以到達視圖模型,但不會將計數器變量更新為視圖。 我嘗試將計數器設置為int和字符串,因此在get和set中進行了轉換。 我還嘗試了可觀察的集合,但這似乎是多余的,因為它是單個變量而不是集合或列表。

有任何想法嗎?

您的代碼正在更新私有messageCounter屬性,而不是要綁定到的公共counter屬性。 更新messageCounter不會引發PropertyChanged

MessagingCenter.Subscribe<App>((App)Application.Current, "Increase", (variable) => {
  messageCounter++;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM