数据绑定不起作用

Data Binding is not working

我正在尝试理解数据绑定的概念,我了解到数据绑定是您可以将 UI 元素绑定到对象的方式,这样其中任何一个的任何更改都会影响另一个(在双向绑定的情况),但这在这个简单的例子中不起作用:

我的 class :

namespace dataBinding.Models
{
public class person
{
    public string name { get; set; }

    public override string ToString()
    {
        return this.name;
    }
}
}

XAML :

xmlns:models="using:dataBinding.Models"
<Page.DataContext>
    <models:person x:Name="personObject" name="Person's Name"/>
</Page.DataContext>

    <TextBlock VerticalAlignment="Center" HorizontalAlignment="Right" 
               Text="{Binding name, Mode=TwoWay}" />

    <Button Name="changeNameButton"
            VerticalAlignment="Center" 
            HorizontalAlignment="Left"
            Content="Change Name" />

C# 代码:

namespace dataBinding
{
public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        changeNameButton.Click += ChangeNameButton_Click;
    }

    private void ChangeNameButton_Click(object sender, RoutedEventArgs e)
    {
        personObject.name = "New Name";
    }
}
}

当我 运行 应用程序时,TextBlock 显示 "Person's Name" 但单击更改名称按钮不会更改 TextBlock 中显示的内容,那么,我在这里缺少什么?

您缺少 INotifyPropertyChanged 接口实现。您的 XAML 不知道它已被更改。

很容易修复,使用https://github.com/Fody/PropertyChanged它会添加代码来通知大家属性已经改变。

[ImplementPropertyChanged]
public class person
{
    public string name { get; set; }

    public override string ToString()
    {
        return this.name;
    }
}