普通绑定
<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;