1

我是 Xamarin 开发的新手,所以如果问题看起来太简单,请多多包涵。string我的 C# 代码(后面的代码)中有一个简单的对象。我想将它绑定到LabelXAML 中的 a ,以便每当字符串更改时,它都会反映在 XAML 页面中。

这是我的 C# 代码

public string Name { get; set; }

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

这是我的 XAML 代码

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

我该怎么做。我做错什么了吗?

4

1 回答 1

3

了解 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 附加到主页视图

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

然后在您的 XAML 中,您可以像这样进行绑定:

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

然后每当NameViewModel 发生变化时,都会反映在 XAML 视图中。

于 2020-05-01T09:41:46.743 回答