WPF中的数据绑定(一)
2013-01-17 20:49
344 查看
WPF中提供的代码帮顶技术有很多种,可以根据不同的情况使用不同的方法,十分灵活,下面根据不同的情况进行设置。
WPF数据绑定(二)
1、通过代码绑定
你可以这样在代码设置
先看看studen类的实现
这个各类继承自INotifyPropertyChanged,这个接口的事要目的就是为了在Name属性被改写的时候会通知到你绑定的目标对象去,使目标也已一起变化。属性如果要绑定,需要继承INotifyPropertyChanged接口。
其实我一开始很纠结,因为PropertyChanged没有让我亲自实现,总是觉得很别扭,这厮是怎么被工作的,其实当你完成数据绑定的时候,会自动给这个时间加一个实现的。我们不需要去管它。
点击按钮的话我会创建一个student类,给Name属性赋值,然后将这个对象绑定到tbcode的Text属性上。
里面有两个比较重要的属性,一个是source一个是path,source是Binding的的源,就是说你的数据源在哪里,另外一个是path就是路径,就是要绑定的具体的数据源是哪个,设置好这两个以后,就可以把这个Binding绑定到你的目标对象上——tbCode,使用BindingOperations.SetBinding,第一个参数是要绑定的对象,第二个参数是你要在这个对象的那个属性上,第三个参数就是之前设置的Binding。
当然这种写法也可以简化
你不需要写一行C#代码就能够完成。Text="{Binding Value, ElementName=slider}"意思是要绑定到哪个控件(slider)的哪个属性(Value)上。
C#的绑定有很多,这里先介绍两种,剩下的后面会一一介绍。
代码地址:
https://github.com/Dothegod/WPF_Training_Sample
WPF数据绑定(二)
1、通过代码绑定
<TabItem Header="CodeBinding"> <Grid> <Button Content="Button" HorizontalAlignment="Left" Margin="49,116,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/> <TextBox Name="tbCode" HorizontalAlignment="Left" Height="22" Margin="49,55,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/> <Button Content="Button" HorizontalAlignment="Left" Margin="259,116,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_2"/> <TextBox Name="tbCode1" HorizontalAlignment="Left" Height="22" Margin="259,55,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/> </Grid> </TabItem>
你可以这样在代码设置
先看看studen类的实现
class Student : INotifyPropertyChanged { public string Age { get; set; } public string Id { get; set; } private string m_Name; public string Name { get { return m_Name; } set { m_Name = value; if (PropertyChanged != null) { this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name")); } } } public event PropertyChangedEventHandler PropertyChanged; }
这个各类继承自INotifyPropertyChanged,这个接口的事要目的就是为了在Name属性被改写的时候会通知到你绑定的目标对象去,使目标也已一起变化。属性如果要绑定,需要继承INotifyPropertyChanged接口。
// 摘要: // 向客户端发出某一属性值已更改的通知。 public interface INotifyPropertyChanged { // 摘要: // 在更改属性值时发生。 event PropertyChangedEventHandler PropertyChanged; }
其实我一开始很纠结,因为PropertyChanged没有让我亲自实现,总是觉得很别扭,这厮是怎么被工作的,其实当你完成数据绑定的时候,会自动给这个时间加一个实现的。我们不需要去管它。
点击按钮的话我会创建一个student类,给Name属性赋值,然后将这个对象绑定到tbcode的Text属性上。
private void Button_Click_1(object sender, RoutedEventArgs e) { Student st = new Student(); st.Name = "Jim"; Binding bd = new Binding(); bd.Source = st; bd.Path = new PropertyPath("Name"); BindingOperations.SetBinding(tbCode, TextBox.TextProperty, bd); }
里面有两个比较重要的属性,一个是source一个是path,source是Binding的的源,就是说你的数据源在哪里,另外一个是path就是路径,就是要绑定的具体的数据源是哪个,设置好这两个以后,就可以把这个Binding绑定到你的目标对象上——tbCode,使用BindingOperations.SetBinding,第一个参数是要绑定的对象,第二个参数是你要在这个对象的那个属性上,第三个参数就是之前设置的Binding。
当然这种写法也可以简化
private void Button_Click_2(object sender, RoutedEventArgs e) { Student st = new Student(); st.Name = "Mike"; tbCode1.SetBinding(TextBox.TextProperty, new Binding("Name") { Source = st }); }
tbCode1.SetBinding这个的实现就是把上面的BindingOperations.SetBinding进行了一个封装。 不过有一点我不明白,我是先给st赋值的,然后再进行绑定,为什么这个时候也会同时textblock空间进行更新呢?希望高手指点。 2、UIElementBInding绑定 这个绑定很简单,也很常用。 如果我有一个silder,一个textbox来显示他的value,应该怎么做?当然你可以实现ValueChanged方法。但是用绑定会更加的灵活。
<TabItem Header="UIElementBInding"> <Grid> <Slider x:Name="slider" HorizontalAlignment="Left" Margin="50,195,0,0" VerticalAlignment="Top" Width="393"/> <TextBox HorizontalAlignment="Left" Height="23" Margin="113,77,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Text="{Binding Value, ElementName=slider}"/> </Grid> </TabItem>
你不需要写一行C#代码就能够完成。Text="{Binding Value, ElementName=slider}"意思是要绑定到哪个控件(slider)的哪个属性(Value)上。
C#的绑定有很多,这里先介绍两种,剩下的后面会一一介绍。
代码地址:
https://github.com/Dothegod/WPF_Training_Sample
相关文章推荐
- wpf数据绑定
- C#探秘系列(八)WPF数据绑定
- WPF最简单的数据绑定【适合初学者】
- WPF中Treeview绑定数据库数据
- WPF DataGrid 之数据绑定--实例2
- 【转】Mvvm Light Toolkit for wpf/silverlight系列之数据绑定
- Windows Presentation Foundation(WPF)中的数据绑定(控件与控件值的绑定)
- c#--wpf数据绑定binding
- WPF DataGrid 之数据绑定
- WPF中在listview进行数据绑定,根据绑定数据调整一列的显示
- wpf后台代码数据绑定
- WPF: WrapPanel 容器的数据绑定(动态生成控件、遍历)
- WPF笔记(4.5 Master-Detail数据绑定)——Data Binding
- 黑马程序员--wpf学习笔记五----说说ListBox\DataGrid与数据绑定的那点事
- .NET各大平台数据列表控件绑定原理及比较(WebForm、Winform、WPF)
- wpf数据绑定
- .NET各大平台数据列表控件绑定原理及比较(WebForm、Winform、WPF)
- WPF编游戏系列 之五 数据绑定
- WPF入门教程系列十六——WPF中的数据绑定(二)
- WPF数据绑定