WPF的几种绑定方式

普通绑定

<Window x:Class="Zhaoxi.BindingLesson.DataSource.DODataSourceWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Zhaoxi.BindingLesson.DataSource"
        mc:Ignorable="d"
        Title="DODataSourceWindow" Height="450" Width="800">
    <Grid>
        <!--目标对象:Textblock-->
        <!--目标属性:Text-->
        <!--绑定数据源-->
        <!--绑定路径-->
        <TextBox Text="Hello" Name="tb_srouce"/>
        <TextBlock Text="{Binding ElementName=tb_srouce,Path=Text}" Margin="0 20 0 0"/>

        <PasswordBox Password="123456" x:Name="pd" Margin="0 40 0 0"/>
        <TextBlock Text="{Binding ElementName=pd, Path=Password}" Margin="0 60 0 0"/>
        <!--1.如果绑定的源是依赖对象的依赖属性,那么这个依赖属性的值发生变化时,会同步到绑定目标。-->
        <!--2.如果绑定的源是非依赖对象的属性,那么这个属性的值发生变化时,不会同步到绑定目标。-->
        <!--3.被绑定的是数据源,需要是属性-->
    </Grid>
</Window>
<Window x:Class="Zhaoxi.BindingLesson.DataSource.NoramlDataSourceWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Zhaoxi.BindingLesson.DataSource"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        mc:Ignorable="d" FontSize="30"
        Title="NoramlDataSourceWindow" Height="450" Width="800">
    <Window.Resources>
        <sys:Int32 x:Key="Value">100</sys:Int32>
        <sys:Int32 x:Key="V1">200</sys:Int32>
        
        <!--string[] list = new string[] { "AAA", "BBB", "CCC" };-->
        <x:Array x:Key="list" Type="sys:String">
            <sys:String>AAA</sys:String>
            <sys:String>BBB</sys:String>
            <sys:String>CCC</sys:String>
        </x:Array>

    </Window.Resources>
    <Grid>
        <TextBlock Text="{Binding Source={StaticResource Value},Path=.}" Name="tb"/>
        <TextBlock Text="{Binding Path=.}" DataContext="{StaticResource Value}" Margin="0 50 0 0" Name="tbb"/>
        
        <!--binding对象内部属性(Soure)数据源优先级更高-->
        <TextBlock  Text="{Binding Source={StaticResource V1},Path=.}" DataContext="{StaticResource Value}" Margin="0 100 0 0"/>
        <!--1.目前两种数据源的绑定方式,一种是直接在XAML中定义,另一种是在代码中定义,这里是在XAML中定义的。
        2.在XAML中定义数据源的方式是使用<Window.Resources>标签,然后在其中定义数据源,这里定义了一个整型数据源,值为100。
        依赖对象(页面上的对象,指定名称,通过ElemenName绑定)
        普通数据,演示通过Soure建立数据源联系,同时也可以使用目标对象的DataContext属性源的关联,建议第一种-->


        <TextBlock Text="{Binding Source={StaticResource list},Path=[1]}" Margin="0 150 0 0"/>
        <ListBox ItemsSource="{Binding Source={StaticResource list}}" Margin="0 200 0 0"/>
    </Grid>
</Window>

绑定MySQL数据库

<ListView x:Name="lv">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="id" Width="230" DisplayMemberBinding="{Binding [0]}"/>
                    <GridViewColumn Header="Name" Width="230" DisplayMemberBinding="{Binding Name}"/>
                    <GridViewColumn Header="Age" Width="230" DisplayMemberBinding="{Binding Age}"/>
                </GridView>
            </ListView.View>
        </ListView>
            string connectionString = "Data Source=localhost;Database=ceshi;User ID=root;Password=SQL123456;Pooling=true;charset=utf8;";
            MySqlConnection connection = new MySqlConnection(connectionString);
            connection.Open();

            MySqlDataAdapter adapter = new MySqlDataAdapter("select * from Person", connection);
            DataTable dataTable = new DataTable();
            adapter.Fill(dataTable);
            this.lv.ItemsSource = dataTable.DefaultView;

linq绑定

        <ListView x:Name="lv">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="id" Width="230" DisplayMemberBinding="{Binding [0]}"/>
                    <GridViewColumn Header="Name" Width="230" DisplayMemberBinding="{Binding Name}"/>
                    <GridViewColumn Header="Age" Width="230" DisplayMemberBinding="{Binding Age}"/>
                </GridView>
            </ListView.View>
        </ListView>
            string connectionString = "Data Source=localhost;Database=ceshi;User ID=root;Password=SQL123456;Pooling=true;charset=utf8;";
            MySqlConnection connection = new MySqlConnection(connectionString);
            connection.Open();

            MySqlDataAdapter adapter = new MySqlDataAdapter("select * from Person", connection);
            DataTable dataTable = new DataTable();
            adapter.Fill(dataTable);

            var result = from q in dataTable.AsEnumerable()
                         where q.Field<string>("Name").ToString()=="lihua"
                         select new
                         {
                             Name = q.Field<string>("Name").ToString(),
                             Age = q.Field<int>("Age")
                          };
            this.lv.ItemsSource = result;

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值