Как связать простой строковый объект с текстом метки в формах Xamarin? - PullRequest
0 голосов
/ 01 мая 2020

Я новичок в разработке Xamarin, поэтому, пожалуйста, имейте в виду, если вопрос кажется слишком простым. У меня есть простой string объект в моем C# коде (код позади). Я хочу связать его с Label в XAML, чтобы при изменении строки она отражалась на странице XAML.

Вот мой C# код

public string Name { get; set; }

public HomePage()
{
    InitializeComponent();
    BindingContext = this;
    Name = "John";
}

Вот мой код XAML

<Label Text="{Binding Name}" />

Как я могу это сделать. Я что-то делаю не так?

1 Ответ

1 голос
/ 01 мая 2020

Важно, чтобы вы узнали о шаблоне MVVM и о том, как выполнить привязку данных. Вы можете увидеть эту ссылку: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/xaml/xaml-basics/data-bindings-to-mvvm.

По сути, вы можете сделать это:

Создать ViewModel для вашей домашней страницы.

public class HomePageViewModel : INotifyPropertyChanged
{
    private string name;
    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
            OnPropertyChanged(nameof(Name));
        }
    }
    public HomePageViewModel()
    {
        // some initialization code here ...
        Name = "John";
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

}

Теперь присоедините вашу ViewModel к представлению HomePage

public HomePageView()
{
    InitializeComponent();
    BindingContext = new HomePageViewModel();
}

Тогда в вашем XAML ваша привязка может быть такой:

<Label Text="{Binding Name}" />

Затем, когда Name изменяется в ViewModel, оно отражается в представлении XAML.

...