WPF笔记(1.6 数据绑定)——Hello,WPF!

这个一节都是在讲一个数据绑定的示例。

功用:输入姓和名,点击Add按钮,ListBox增加一条记录,永远是字符串“name: nick”;ListBox原 先有3条不同记录,选中ListBox一条记录,两个输入框姓和名相应变化。

技术分析:2个类,一个xaml,一个一个分析。

1)Nickname类, 实体类,提供两个属性Nick和Name,还有一个PropertyChanged事件。实现了 INotifyPropertyChanged 接口(从而可以使用PropertyChangedEventArgs事件,在给属性赋值时,激发该 事件,通知外界customer——观察者xaml界面相应变化,即数据同步。

2)Nicknames类,实现ObservableCollection<Nickname>接口,类下不再提供自定义的东西, 因为实现该接口后,这个类成为了一个Nickname的强类型集合,并且可以将数据的add和remove通知 customer,从而数据同步。

注意,INotifyPropertyChanged 适用于单个的类属性,ObservableCollection适用于监视某一堆的数 据是否发生变化(add/remove),这是二者的区别。

3)window1.xaml.cs 后台类

提供内部集合names,Nicknames类型。

在构造函数中,先初始化以及绑定button_Click事件,然后实例化names变量,最后绑定names到前台 的DockPanel控件:

dockPanel.DataContext = this.names;

DataContext属性设置是关键,感觉和过去的绑定差不多。

Button每按一次,都会在names中加一条同样的数据nick: name

4)window1.xaml 前台

  <DockPanel x:Name="dockPanel">
    <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
      <TextBlock VerticalAlignment="Center">Name: </TextBlock>
      <TextBox Text="{Binding Path=Name}" />
      <TextBlock VerticalAlignment="Center">Nick: </TextBlock>
      <TextBox Text="{Binding Path=Nick}" />
    </StackPanel>
    <Button DockPanel.Dock="Bottom" x:Name="addButton">Add</Button>
    <ListBox
      ItemsSource="{Binding}"
      IsSynchronizedWithCurrentItem="True" />
  </DockPanel>

时间: 2025-01-01 14:54:38

WPF笔记(1.6 数据绑定)——Hello,WPF!的相关文章

WPF/Silverlight2.0 Binding(数据绑定)机制详解

何为数据绑定 在WPF技术中控件基类(FrameworkElement.FrameworkContentElement)中DataContext属性实现了绑 定机制,在XAML中也支持此机制.当一个控件的DataContext发生变化时,其子控件的DataContext也会继 承父控件的DataContext(前提是这个子控件没有另外赋值).子控件的属性获取数据源中的数据,支持 XAML通过Binding标记获取数据源中的值.数据源更新时刷新其每个子控件中的数据更新,实现一呼百应 的效果! Bi

VSTO学习笔记(七)基于WPF的Excel分析、转换小程序

原文:VSTO学习笔记(七)基于WPF的Excel分析.转换小程序 近期因为工作的需要,要批量处理Excel文件,于是写了一个小程序,来提升工作效率. 小程序的功能是对Excel进行一些分析.验证,然后进行转换.   概述 小程序主界面如下: 首先选择一个日期和类别,从命名上对待分析的Excel文件进行过滤.点击[浏览]选择待分析的Excel文件所在的目录, 程序中会获取所有子目录.然后点击[执行分析]就会按照左边CheckBox中的选择进行分析,分析结果显示在每一行中间.[修改配置]可以对分析

wpf中Datagrid的数据绑定

问题描述 wpf中Datagrid的数据绑定 datagrid的items.Add(一个student_data类),这个student_data类包含了name.age.sex.id.现需要在datagrid中的columns中显示出这些name.age.sex.id信息 解决方案 设置datagrid的模板就可以了 解决方案二: 解决方案三: <DataGrid AutoGenerateColumns=""False"" Height="&quo

2000条你应知的WPF小姿势 基础篇&lt;22-27 WPF生命周期, 基础类等&gt;

原文:2000条你应知的WPF小姿势 基础篇<22-27 WPF生命周期, 基础类等> 端午长假在家陪着女朋友, 幸福感满满,生活对于一只饱经忧患的程序猿来说也是非常重要的,也就暂时没有更新博客.休假结束,回归奋斗的日子了,开始继续更新WPF系列. 在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C#  和 2,000 Things You Should Kn

WPF界面里拖动自定义控件,WPF界面并没有后台代码。

问题描述 WPF界面里拖动自定义控件,WPF界面并没有后台代码. 我的控件已经写好了,是一个虚拟键盘,现在的做法是获取textbox的焦点,判断控件与界面之间的大小关系使其能在固定的位置显示,但现在我想要实现其能在界面上自由拖动/移动,暂时没有想到什么好的办法.网上有说用mousedown等函数来控制,但那些需要自界面后台代码中实现,现在界面是没有后台代码的,不知道如何实现,希望能有大神指教一下.谢谢! 补充一点键盘的前台代码:

2000条你应知的WPF小姿势 基础篇&lt;28-33 WPF启动故事&gt;

原文:2000条你应知的WPF小姿势 基础篇<28-33 WPF启动故事> 在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C#  和 2,000 Things You Should Know About WPF .他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识.Follow他的博客也有一段日子了,很希望能够分享给大家. 本系

2000条你应知的WPF小姿势 基础篇&lt;74-77 WPF 多窗口Tips&gt;

原文:2000条你应知的WPF小姿势 基础篇<74-77 WPF 多窗口Tips> 在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C#  和 2,000 Things You Should Know About WPF .他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识.很希望能够分享给大家. 本系列我不仅会翻译他的每一个ti

2000条你应知的WPF小姿势 基础篇&lt;69-73 WPF Freeze机制和Template&gt;

原文:2000条你应知的WPF小姿势 基础篇<69-73 WPF Freeze机制和Template> 在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C#  和 2,000 Things You Should Know About WPF .他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识.很希望能够分享给大家. 本系列我不仅

使用数据绑定和WPF自定义数据显示

本文将介绍以下内容: WPF 数据绑定 数据显示和分层数据 使用模板 输入验证 本文使用以下技术: WPF. XAML.C# 目录 在代码中绑定 使用模板 使用继承的 DataContext 使用集合视图 使用分层数据 使用多个控件显示 XML 数据 使用多个控件显示业务对象 一个用于显示整个层次结构的控件 使 用分层数据模板 使用用户输入 通过 ValidationRules 验证输入 显示验证错误 通过 IDataErrorInfo 验证输入 结束语 在虚拟实验室中进行试验: 当 Windo