数据绑定不起作用

本文关键字:不起作用 数据绑定 | 更新日期: 2023-09-27 18:32:42

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

我的班级 :

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";
    }
}
}

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

数据绑定不起作用

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

易于修复,使用https://github.com/Fody/PropertyChanged 它将添加代码以通知所有人属性已更改。

[ImplementPropertyChanged]
public class person
{
    public string name { get; set; }
    public override string ToString()
    {
        return this.name;
    }
}