Binding ,抄自 http://www.cnblogs.com/cnblogsfans/archive/2011/02/19/1958586.html

1. 绑定到其它元素

<Grid>
<StackPanel >
<TextBox x:Name="textBox1" Height="150" BorderBrush="Black" BorderThickness="10"/>
<Label Content="{Binding ElementName=textBox1,Path=Text}"/>
</StackPanel>

</Grid>

2. 绑定到静态资源

<Window.Resources>
<ContentControl x:Key="FirstKey">Hello World!</ContentControl>
</Window.Resources>
<Grid>
<StackPanel>
<Label x:Name="label1" Content="{Binding Source={StaticResource ResourceKey=FirstKey}}"/>
</StackPanel>
</Grid>

3.绑定到自身

<StackPanel>
<Label x:Name="label45347356736" BorderBrush="Black" Width="1200" Content="{Binding RelativeSource={RelativeSource Self},Path=Width}"/>
</StackPanel>

4.绑定到指定类型的父元素

 

<Grid x:Name="Grid1">
<StackPanel>
<Label x:Name="label1" Content="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Grid}},Path=Name}"/>
</StackPanel>
</Grid>

5. 绑定到对象 

public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

<StackPanel x:Name="stackPanel">
<StackPanel.DataContext>
<local:Person Name="Fred" Age="29"/>
</StackPanel.DataContext>
<TextBlock Text="{Binding Path=Name}"/>
<TextBlock Text="{Binding Path=Age}"/>
</StackPanel>

6. 绑定到集合

<Window.Resources>
<local:PersonList x:Key="person">
<local:Person Name="Fred" Age="30"/>
<local:Person Name="ZFF" Age="30"/>
</local:PersonList>
</Window.Resources>
<StackPanel x:Name="stackPanel">
<ListBox ItemsSource="{Binding Source={StaticResource ResourceKey=person}}" DisplayMemberPath="Name"/>
</StackPanel>

public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

public class PersonList:ObservableCollection<Person>
{

}

8.DataContext共享源

WPF 提供了一个称之为 "数据上下文 (DataContext)" 的东西让我们可以在多个元素上共享一个源对象,只需将其放到父元素 DataContext 属性即可。当我们不给 Binding 扩展标志指定 Source 属性时,它会自动寻找上级父元素的数据上下文。

9.使用XML作为Binding的源

<StackPanel>

       <ListView x:Name="personListView">

           <ListView.View>

               <GridView>

                   <GridViewColumn Header="Id" Width="100"

                                    DisplayMemberBinding="{Binding [email protected]}"/>

                   <GridViewColumn Header="Name" Width="100"

                                    DisplayMemberBinding="{Binding XPath=Name}"/>

               </GridView>

           </ListView.View>

       </ListView>   

       <Button Click="Button_Click">Load Data</Button>

   </StackPanel>

private void btn_Click(object sender, RoutedEventArgs e)
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(@"E:\Work\20150516\WpfApplication368\WpfApplication368\FirstXML.xml");

XmlDataProvider xdp = new XmlDataProvider();
xdp.Document = xmlDocument;
xdp.XPath = @"/PersonList/Person";

this.personListView.DataContext = xdp;
this.personListView.SetBinding(ListView.ItemsSourceProperty, new Binding());
}

时间: 2024-10-10 21:14:17

Binding ,抄自 http://www.cnblogs.com/cnblogsfans/archive/2011/02/19/1958586.html的相关文章

TCL 中upvar 用法 (摘自http://www.cnblogs.com/kane1990/archive/2011/12/19/2293981.html)

可以用 upvar 命令模拟传引用调用的行为,这对数组特别有用.如果a是一个数组,就不能像myproc $a这样把它传给过程myproc,因为并没有 对应整个数组的值:只有对应各个数组元素的值. 但是可以把数组名传给过程,myproc a,然后使用upvar命令在过程中访问数组的元素. 下面是在过程中使用upvar的简单示例,输出一个数组的内容: proc printArray {name} { upvar $name a foreach el [ lsort [ array names a]]

c# 和 java &lt;转载&gt;http://www.cnblogs.com/zhucai/archive/2011/02/16/csharp-compare-java.html

从语法层面来讲,c# 和 java 是非常相似的. <转载> 这篇文章对C#与Java做一个语言级的对比,方便C#转Java或Java转C#的人有个大致了解.这里大致用C#3.0与Java6.0做比较. 写完后得知维基百科里有更加全面得多的比较: http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java .NET(C#)   Java   基本类型   基本类型 C#中有无符号数,Java没有. C#中有值类型,且可自己定义值类型的

java反射详解 (转至 http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html)

本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解. 下面开始正文. [案例1]通过一个对象获得完整的包名和类名 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package Reflect; /**  * 通过一个对象获得完整的包名和类名  * */ class Demo{     //other codes... } class hello{     pu

java中的多线程(转自http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html)

在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口. 对于直接继承Thread的类来说,代码大致框架是: 1 2 3 4 5 6 7 8 9 10 11 12 class 类名 extends Thread{ 方法1; 方法2: … public void run(){ // other code… } 属性1: 属性2: … } 先看一个简单的例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

linux下使用tar命令 (转至http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.html)

解压语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用.主选项:c 创建新的档案文件.如果用户想备份一个目录或是一些文件,就要选择这个选项.相当于打包. x 从档案文件中释放文件.相当于拆包. t 列出档案文件的内容,查看已经备份了哪些文件. 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩.辅助选项: -z :是否同时具有 gzip 的属性?亦即是否需要用 gzi

MVC演化 (转至http://www.cnblogs.com/wubaiqing/archive/2011/10/26/2225438.html)

MVC已经成为我们最常误用的模式,人们之所以常常误用MVC,很大程度上是因为混淆了不同的MVC变体. Classic MVC Classic MVC 大概上世纪七十年代,Xerox PARC的Trygve提出了MVC的概念. 并应用在Smalltalk系统中,为了和其它类型的MVC加以区分,历史上习惯的称之为Classic MVC. Classic Mvc模式 Model:封装领域数据及逻辑 View:查询领域数据并展现给用户 Conctroller:截获用户请求并改变领域数据 从依赖关系看,M

static作用(修饰函数、局部变量、全局变量)转自http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html

static作用(修饰函数.局部变量.全局变量) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容 char a = 'A'; // global variablevoid msg() {    printf("Hello\n

Extjs4表单(转 出处:http://www.cnblogs.com/luluping/archive/2011/11/09/2243763.html)

<HTML> <HEAD> <TITLE>提示信息</TITLE> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="http://www.cnblogs.com/ext-4.0

XPath语法 在C#中使用XPath示例 【转http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html】非常详细的文章

XPath语法 在C#中使用XPath示例 XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml version="1.0" encoding="utf-8" ?> <pets> <cat color="black" weight="10"> <price>100</price>