数据绑定是在应用程序界面和业务逻辑之间建立连接的过程。
1.WPF绑定的四个基本元素:绑定目标,绑定属性,绑定源,绑定值。
下面用例说明这四个元素之间关系
<TextBox Name="a" Text="ab" ></TextBox>
<TextBox Name="b" Text="{Binding ElementName=a,Path=Text,Mode= OneWay}" />
其中绑定目标是Name="b"的TextBox,它的Text属性就是绑定属性,
绑定源是Name="a"的TextBox,绑定值就是它的Text。
2.绑定方式主要有四种:
(1)OneWay:这种绑定方式当绑定源的绑定值改变时,目标值也会改变。
(2)OneTime:这种绑定方式只是绑定一次,以后无论源或目标修改都互补影响。
(3)OneWayToSource:这种绑定,是目标值改变,并通知源值一起改变,源值修改不影响目标。
它是和OneWay相反的。
(4)TwoWay:这种方式下,源值和目标值的任何一方修改,都会通知另一方改变,互相都影响对方。
3.使用绑定
(1)ListView绑定数组
<ListView Name="listView1" VerticalAlignment="Top"
ItemsSource="{Binding}">
</ListView>
代码中只要为ListView的DataContext赋值即可,
string[] words=new string[] {"WPF", "WCF", "WF", "LINQ"};
this.listView1.DataContext = words;
(2)DataGrid绑定使用。这个控件可以自己填充列,也可以自定义列。
默认情况下DataGrid根据绑定数据的属性创建列。
自定义列,在<DataGrid></DataGrid>之间添加如下代码,
可以添加标题为Culumn1的列。
<DataGrid.Columns>
<DataGridTextColumn Width="*" Binding="{Binding Column1,Mode=OneWay}" Header="Column1">
</DataGridTextColumn>
</DataGrid.Columns>
在使用DataGrid时候,可能会这样的问题:
问题1:最后一行是多出来的空白行
解决办法: CanUserAddRows="False"
问题2:最后一列是多出来的空白列
解决办法:将最后的DataGridTextColumn中Width属性设置"*",即: Width="*"
<DataGrid AutoGenerateColumns="False"
Name="dataGrid1"
ItemsSource="{Binding}"
CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Binding="{Binding Column1,Mode=OneWay}" Header="Column1">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>