Xamarin формы: как изменить текстовое значение метки с viewmodel? - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу изменить текстовое значение метки предыдущей страницы при нажатии кнопки «Назад» на новой странице.Я использую функцию центра сообщений на новой странице и перенаправляю поток кода в RefreshCustomerDetails () в viewmodel.

Я пробовал, как показано ниже.

string _fullname = "";
public string FullName
{
    protected set
    {
        if (_fullname != value)
        {
            _fullname = value;
            OnPropertyChanged("FullName");
        }
    }
    get { return _fullname; }
}

public void RefreshCustomerDetails()
{
   //FullName = null;
   FullName = Application.Current.Properties["customerFullName"].ToString();
}

   <Label 
      x:Name="title_label"
      Text="{Binding FullName}"
      Font="Bold,18" 
      TextColor="Black"
      Margin="-20,0,0,0"
      HorizontalOptions="CenterAndExpand" 
      VerticalOptions="Center"/>

Извлечение значения Fullname из Local db и связывание егокак выше код, но без изменения имени при нажатии кнопки назад.Попробуйте присвоить нулевое значение, которое также не работает.

Есть ли исправления в моем коде?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Обновленный код, как показано ниже, удалите RefreshCustomerDetails () и добавьте Device.BeginInvokeOnMainThread внутри MessagingCenter .

Text="{Binding FullName,Mode=TwoWay}"


MessagingCenter.Subscribe<AddCustomerBySOPage>(this, "Refresh", (sender) =>
     {
       Device.BeginInvokeOnMainThread(() =>
         {
            FullName = Application.Current.Properties["customerFullName"].ToString();
          });
     });
0 голосов
/ 19 сентября 2018

Ваш код выглядит хорошо, он должен работать.Ваш ViewModel ингарирует от INotifyPropertyChanged?Это требуется для OnPropertyChanged():

public class MyViewModel : INotifyPropertyChanged
{
    // stuff ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...