当前位置: 首页 > news >正文

5.2 WPF数据绑定简单示例1

         数据绑定在WPF中是一个核心概念,含义如下:

         当数据变化时,希望控件的显示内容也跟着变化;反之亦然,比如文本控件修改了内容,也希望变量同步变化,因此需要数据绑定。它允许将UI元素与数据源连接起来。本文档记录这个数据绑定的一种实现过程。

一、实现过程描述

 1.数据类实现INotifyPropertyChanged接口:

    2.在XAML中,使用Binding语法将UI元素绑定到该类的属性;比如:

       TextBox使用双向绑定(UpdateSourceTrigger=PropertyChanged}

   3. 在窗口的代码中,设置DataContext为该数据模型的实例

     这样,当数据变化时(即使是多线程中修改了数据),控件中的显示也会变化。并没有报winform中常见的非UI线程更新UI控件的报警问题。

二、实际代码

  <StackPanel>
      <TextBlock Text="{Binding Name}" FontSize="20" Margin="0,0,0,10"/>
      <TextBox Text="{Binding Name,UpdateSourceTrigger=PropertyChanged}" Margin="0,10,0,10"/>
      <Button x:Name="btnModfiyName" Content="修改名字" Click="btnModfiyName_Click" Padding="10,5"/>
      <Button x:Name="btnThreadModfiyName" Content="线程修改名字" Click="btnThreadModfiyName_Click"/>
  </StackPanel>
 public class Person : INotifyPropertyChanged
 {
     private string _name;
     public string Name
     {
         get => _name;
         set
         {
             _name = value;
             OnPropertyChanged(nameof(Name));               
         }
     }
     public event PropertyChangedEventHandler PropertyChanged;
     protected virtual void OnPropertyChanged(string propertyName)
     {
         PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
     }
 }
 
public partial class Window1 : Window
 {
     private Person _person = new Person { Name = "张三" };
     public Window1()
     {
         InitializeComponent();
         DataContext = _person;
     }

   

     private void btnModfiyName_Click(object sender, RoutedEventArgs e)
     {
         _person.Name = "李四";          

     }

     private void btnThreadModfiyName_Click(object sender, RoutedEventArgs e)
     {
         new TaskFactory().StartNew(() =>
         {
             _person.Name = "王五";
         });
     }
 }

相关文章:

  • 力扣DAY29 | 热100 | 删除链表的倒数第N个结点
  • tauri2.0安卓端开发踩坑之旅
  • 云安全之k8s未授权漏洞总结
  • 使用 OCRmyPDF 将扫描 PDF 转为可搜索文档和文本文件
  • 可发1区的超级创新思路(python\matlab实现):基于周期注意力机制的TCN-Informer时间序列预测模型
  • 深入解析 PKI(公钥基础设施):原理、应用与安全保障
  • 【科研绘图系列】R语言绘制重点物种进化树图(taxa phylogenetic tree)
  • el-tree-select选项数据无法回显
  • 简历诊断与面试指导:学校用AI开出“数字处方”,GAI认证助力学生求职
  • AI Agent开发大全第十三课-向量数据库Qdrant集群布署全步骤
  • firewall-cmd --list-all-zones 命令详解
  • 几个工作中常用的网站
  • Go语言nil原理深度解析:底层实现与比较规则
  • MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案
  • 进程通信 system V共享内存 ─── linux第25课
  • Dify实现自然语言生成SQL并执行
  • MySQL--权限管理
  • 性能测试理论基础-性能指标及jmeter中的指标
  • 如何编写单元测试
  • UE4学习笔记 FPS游戏制作26 UE中的UI
  • 东莞网站关键字/9 1短视频安装
  • 专业建设企业网站/企业网站模板设计
  • 阿里巴巴上做网站要多少钱/搜狗网站收录
  • 新增备案网站/百度推广助手电脑版
  • 六安市城乡建设委员会网站/西安百度seo
  • 郑州一建集团公司官网/搜索引擎排名优化技术