WPF 数据绑定类属性 和数据更新

WPF中数据绑定是一个非常强大的功能,不仅可以绑定后台数据,还可以进行实时更新。

数据绑定实例 :

在后台创建模型类,然后在标签页面进行导入并绑定。

cs 复制代码
第一步: 
// 在后台创建模型类
public class MyData
{
    public string Name { get; set; } = "李逵";
}

第二步:
// 在标签页面导入实体类
xmlns:c ="clr-namespace:WpfProgram.Entity"

第三步:
// 在标签页面指定数据源
<Grid.Resources>
    <c:MyData x:Key="mydataScource"/>
</Grid.Resources>

第四步:
// 在标签页面设置或着获取参与数据绑定时候的上下文,(通俗来讲以后可以在代码里面获取对象)
<Grid.DataContext>
    <Binding Source="{StaticResource mydataScource}"/>
</Grid.DataContext>

第五步: 
// 在标签页面绑定到目标标签上 label:{Bingding path=对象模型属性}
<Label Content="{Binding Path=Name}" FontSize="20" >
</Label>

数据更新实例:

// 实现数据更新需要再模型类里面添加INotifyPropertyChanged接口

// INotifyPropertyChanged 检查属性是否发生变化的接口

cs 复制代码
数据更新 :  
// 第一步: 在后台设置模型类
public class MyData : INotifyPropertyChanged
{
    public string Name { get; set; } = "李逵";

    // 实现INotifyPropertyChanged这个接口的PropertyChanged属性
    // PropertyChanged类型是委托函数
    public event PropertyChangedEventHandler? PropertyChanged;

    protected void OnPropertyChanged(string propertyName)
    {
        // 当属性修改的时候触发PropertyChanged事件,紧跟着调用该函数
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

《--第二步: 标签设计并绑定数据--》
<Grid Name="g1">
    <Grid.Resources>
        <c:MyData  x:Key="s1"/>
    </Grid.Resources>
    <Grid.DataContext>
        <Binding Source="{StaticResource s1}" />
    </Grid.DataContext>
    
    <!--把数据绑定给Grid标签,Grid下子标签都可以使用-->
    <Label Width="100"
           Height="40"
           Content="{Binding Path=Name}"
           VerticalAlignment="Top">
    </Label>
</Grid>

// 第三步: 在cs页面创建模型类对象,然后将对象赋值给Grid的DataContext属性 实现数据更新
MyData data = new MyData();
data.Name = "鲁提辖";
this.g1.DataContext = data;

数据更新实例2:

此方法在模型类数据变化时立马调用INotifyPropertyChanged的PropertyChanged函数,比较之前的更新方法此方法更新速度更快,实现数据更新,界面立马更新。

INotifyPropertyChanged接口 :

实现数据更新需要再模型类里面添加INotifyPropertyChanged接口

INotifyPropertyChanged 检查属性是否发生变化的接口。

cs 复制代码
数据更新 : 
// 第一步在后台设置模型类 
public class MyData : INotifyPropertyChanged
{
    private string name = "LIHX";
    public string Name
   {
    get
    {
        return name;
    }
    set
    {
        name= value;
        // 当数据更新时立刻在set里面调用OnProChanged函数
        OnProChanged("Name");
    }
}

    // 实现INotifyPropertyChanged这个接口的PropertyChanged属性
    // PropertyChanged类型是委托函数
    public event PropertyChangedEventHandler? PropertyChanged;

    protected void OnProChanged(string propertyName)
    {
        // 当属性修改的时候触发PropertyChanged事件,紧跟着调用该函数
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

// 第二步设置标签布局并且进行数据绑定
<Grid Name="g1">
    <Grid.Resources>
        <c:MyData  x:Key="s1"/>
    </Grid.Resources>
    <Grid.DataContext>
        <Binding Source="{StaticResource s1}" />
    </Grid.DataContext>
    
    <!--把数据绑定给Grid标签,Grid下子标签都可以使用-->
    <Label Width="100"
           Height="40"
           Content="{Binding Path=Name}"
           VerticalAlignment="Top">
    </Label>
</Grid>

// 第三步在cs页面创建模型类对象,然后将对象赋值给Grid的DataContext属性 实现数据更新
MyData data = new MyData();
data.Name = "鲁提辖";
this.g1.DataContext = data;
相关推荐
anyup38 分钟前
2026第一站:分享我在高德大赛现场学到的技术、产品与心得
前端·架构·harmonyos
BBBBBAAAAAi1 小时前
Claude Code安装记录
开发语言·前端·javascript
xiaolyuh1231 小时前
【XXL-JOB】 GLUE模式 底层实现原理
java·开发语言·前端·python·xxl-job
源码获取_wx:Fegn08951 小时前
基于 vue智慧养老院系统
开发语言·前端·javascript·vue.js·spring boot·后端·课程设计
毕设十刻1 小时前
基于Vue的人事管理系统67zzz(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
anyup1 小时前
从赛场到产品:分享我在高德大赛现场学到的技术、产品与心得
前端·harmonyos·产品
前端工作日常2 小时前
我学习到的A2UI的功能:纯粹的UI生成
前端
Jing_Rainbow2 小时前
【 前端三剑客-37 /Lesson61(2025-12-09)】JavaScript 内存机制与执行原理详解🧠
前端·javascript·程序员
椒颜皮皮虾2 小时前
TensorRtSharp:在 C# 世界中释放 GPU 推理的极致性能
c#·tensorrt
行止952 小时前
WinForms 彻底隐藏 滚动条的终极解决方案
c#