WPF绑定

数据绑定是在应用程序界面和业务逻辑之间建立连接的过程。

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>
   

你可能感兴趣的:(WPF)