WPF自定义数据绑定_第1页
WPF自定义数据绑定_第2页
WPF自定义数据绑定_第3页
WPF自定义数据绑定_第4页
WPF自定义数据绑定_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WPF自定义数据动态绑定 ZHUO XiaoZhao最近公司需要用WPF做一个项目,需要用到其中的自定义数据动态绑定,由于从未做过C#开发,更没做过WPF开发,所以google搜索几个例子,但照着例子来做其结果都出不来,结果就只好自己摸索了,经过一天的摸索,结果终于出来了,整理如下。1. 新建一个WPF工程,工程名为:MyDataBinding新建的工程确保有如下4个文件:App.xaml,2. 新建一个用于绑定的数据类,类名为:MyData在代码中实现INotifyPropertyChanged接口,代码如下所示:using System;using ;using ;using ;using

2、 ;namespace MyDataBinding class MyData : INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; 3. 接下实现自己的数据,如名字(Name)与年龄(Age),代码如下所示:using System;using ;using ;using ;using ;namespace MyDataBinding class MyData : INotifyPropertyChanged public event PropertyChangedEventHand

3、ler PropertyChanged; private string name; private int age; public MyData() name = "kitty" age = 10; public string Name get return ; set = value; PropertyChanged(this, new PropertyChangedEventArgs("Name"); public int Age get return this.age; set this.age = value

4、; PropertyChanged(this, new PropertyChangedEventArgs("Age"); 网上的例子的自定义类到这就结束了,这也是出不来结果的原因,为了能出结果,我自己增加了一个属性,属性名为:Data,返回的数据是一个静态的MyData对像,这很重要,好了,自定义类到此步可以结束了,完整的数据类代码如下所示:using System;using ;using ;using ;using ;namespace MyDataBinding class MyData : INotifyPropertyChanged public event Pr

5、opertyChangedEventHandler PropertyChanged; private string name; private int age; private static MyData data = new MyData(); public MyData() name = "kitty" age = 10; public MyData Data get return data; public string Name get return ; set = value; PropertyChanged(this, new

6、 PropertyChangedEventArgs("Name"); public int Age get return this.age; set this.age = value; PropertyChanged(this, new PropertyChangedEventArgs("Age"); 4. 现在可以实现UI了,但别急,在实现UI之前还需要增加MyData数据源,并分配一个Key,Key名为“DataSource”,这部分工作是在中完成的,增加的脚本主要是以下两行:xmlns:vml="clr-namespace:MyDataB

7、inding"<vml:MyData x:Key="DataSource"/>完整的脚本如下所示:<Application x:Class="MyDataBinding.App" xmlns=" :/schemas.microsoft /winfx/2006/xaml/presentation" xmlns:xwinfx/2006/xaml" xmlns:vml="clr-namespace:MyDataBinding" StartupUri="">

8、<> <vml:MyData x:Key="DataSource"/> </></Application>5. 现在你可以在中通过该Key绑定数据了,增加Window的DataContext属性,它建立的是一个根元素的通用源:DataContext="Binding Source=StaticResource DataSource, Path=Data"其中数据源为DataSource,Path为Data,这个“Path=Data”很重要,否则会出不了结果的。好了,现在终于可以实现自已的UI,增加两个Tex

9、tBox对像,绑定Name和Age,脚本如下:<TextBox Height="23" HorizontalAlignment="Left" Margin="76,12,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Text="Binding Name"/> <TextBox Height="23" HorizontalAlignment="

10、Left" Margin="76,41,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" Text="Binding Age"/>现在增加一个按钮,用于性名或年龄改变的测试,中的脚本如下:<Button Content="Test" Height="23" HorizontalAlignment="Left" Margin="202,12,0

11、,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />的代码如下所示: private void button1_Click(object sender, RoutedEventArgs e) MyData myData = new MyData(); = "Tom" = 20; 注意其中要对Data属性进行操作,这才能保让UI绑定的数据与自己操作的数据是同一个对像。6. 运行如

12、下所示:7. OK,全部结束,这只一个最小代码的实现,相关的绑定技术在此也不做多解释,网上的资料很多,其中某些述语不太会描述,希望大家原谅,也希望该文对大家有用,下面附上所有代码或脚本。<Application x:Class="MyDataBinding.App" xmlns=" :/schemas.microsoft /winfx/2006/xaml/presentation" xmlns:xwinfx/2006/xaml" xmlns:vml="clr-namespace:MyDataBinding" Start

13、upUri=""> <> <vml:MyData x:Key="DataSource"/> </></Application>using System;using ;using ;using ;using ;using ;namespace MyDataBinding / <summary> / Interaction logic for / </summary> public partial class App : Application <Window x:Class

14、="MyDataBinding.MainWindow" xmlns=" :/schemas.microsoft /winfx/2006/xaml/presentation" xmlns:xwinfx/2006/xaml" DataContext="Binding Source=StaticResource DataSource, Path=Data" Title="MainWindow" Height="120" Width="325"> <Grid&g

15、t; <TextBlock Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="textBlock1" Text="姓?名?" VerticalAlignment="Top" Width="58" /> <TextBlock Height="23" HorizontalAlignment="Left" Margin=&quo

16、t;12,41,0,0" Name="textBlock2" Text="年¨º龄¢?" VerticalAlignment="Top" Width="58" /> <TextBox Height="23" HorizontalAlignment="Left" Margin="76,12,0,0" Name="textBox1" VerticalAlignment="Top&

17、quot; Width="120" Text="Binding Name"/> <TextBox Height="23" HorizontalAlignment="Left" Margin="76,41,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" Text="Binding Age"/> <Button Content=&q

18、uot;Test" Height="23" HorizontalAlignment="Left" Margin="202,12,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" /> </Grid></Window>.csusing System;using ;using ;using ;using ;using ;using ;using ;using ;using ;using ;using ;using ;namespace MyDataBinding / <summary> / Interaction logic for / </summary> public partial class MainWindow : Window public MainWindow() InitializeComponent(); private void button1_Click(object sender, RoutedEventArgs e) MyData myData =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论