绑定到其它元素

<Grid> 
    <StackPanel> 
        <TextBox x:Name="textbox1" /> 
        <Label Content="{Binding ElementName=textbox1, Path=Text}" /> 
    </StackPanel>
</Grid>
 
绑定到静态资源
<Window.Resources> 
        <ContentControl x:Key="text">Hello, World!</ContentControl>
</Window.Resources>
<Grid> 
    <StackPanel> 
        <Label x:Name="label1" Content="{Binding Source={StaticResource text}}" /> 
    </StackPanel>
</Grid>
<STRONG>3. 绑定到自身</STRONG>
<Grid> 
    <StackPanel> 
        <Label x:Name="label1" Content="{Binding RelativeSource={RelativeSource Self}, Path=Name}" /> 
    </StackPanel>
</Grid>
绑定到指定类型的父元素
<Grid x:Name="Grid1"> 
        <StackPanel> 
            <Label x:Name="label1" Content="{Binding RelativeSource={RelativeSource FindAncestor,  
                AncestorType={x:Type Grid}}, Path=Name}" /> 
        </StackPanel>
</Grid>
 
绑定到对象
public class Person  
   {  
       public string Name { get; set; }  
       public int Age { get; set; }  
   }
<StackPanel x:Name="stackPanel">  
        <StackPanel.DataContext>  
            <local:Person Name="Jack" Age="30"></local:Person>  
        </StackPanel.DataContext>  
        <TextBlock  Text="{Binding Path=Name}"></TextBlock>  
        <TextBlock Text="{Binding Path=Age}"></TextBlock>         
</StackPanel>

绑定到集合
public class Person  
    {  
        public string Name { get; set; }  
        public int Age { get; set; }  
    }

public class PersonList : ObservableCollection<Person>  
    { }
<Window.Resources>  
       <local:PersonList x:Key="person">  
           <local:Person Name="Jack" Age="30"></local:Person>  
           <local:Person Name="Tom" Age="32"></local:Person>  
       </local:PersonList>  
   </Window.Resources>  
   <StackPanel x:Name="stackPanel">  
       <ListBox  ItemsSource="{Binding Source={StaticResource ResourceKey=person}}" 
                  DisplayMemberPath="Name">             
       </ListBox> 
</StackPanel>
 
DataContext共享源
我们需要将同一资源绑定到多个 UI 元素上,很显然到处写 "{Binding Source={StaticResource person}}" 是件很繁琐且不利于修改的做法。WPF 提供了一个称之为 "数据上下文 (DataContext)" 的东西让我们可以在多个元素上共享一个源对象,只需将其放到父元素 DataContext 属性即可。当我们不给 Binding 扩展标志指定 Source 属性时,它会自动寻找上级父元素的数据上下文。
<Window.Resources>  
        <local:PersonList x:Key="person">  
            <local:Person Name="Jack" Age="30"></local:Person>  
            <local:Person Name="Tom" Age="32"></local:Person>  
        </local:PersonList>  
    </Window.Resources>  
    <StackPanel x:Name="stackPanel" DataContext="{StaticResource person}">  
        <ListBox  ItemsSource="{Binding}" 
                   DisplayMemberPath="Name">             
        </ListBox>  
    </StackPanel>
 
使用XML作为Binding的源
XML:
<?xml version="1.0" encoding="utf-8" ?> 
<PersonList>  
  <Person Id="1">  
    <Name>Jack</Name>  
  </Person>  
  <Person Id="2">  
    <Name>Tom</Name>  
  </Person>  
  <Person Id="3">  
    <Name>Justin</Name>  
  </Person>  
  <Person Id="4">  
    <Name>David</Name>  
  </Person> 
</PersonList>

XAML:
<StackPanel>  
       <ListView x:Name="personListView">  
           <ListView.View>  
               <GridView>  
                   <GridViewColumn Header="Id" Width="100" 
                                    DisplayMemberBinding="{Binding XPath=@Id}"/>  
                   <GridViewColumn Header="Name" Width="100" 
                                    DisplayMemberBinding="{Binding XPath=Name}"/>  
               </GridView>  
           </ListView.View>  
       </ListView>     
       <Button Click="Button_Click">Load Data</Button>  
   </StackPanel>

private void Button_Click(object sender, RoutedEventArgs e)  
 {  
            XmlDocument xmlDocument = new XmlDocument();  
            xmlDocument.Load("Person.xml"); 
            XmlDataProvider xdp = new XmlDataProvider();  
            xdp.Document = xmlDocument;  
            xdp.XPath = @"/PersonList/Person"; 
  
            this.personListView.DataContext = xdp;  
            this.personListView.SetBinding(ListView.ItemsSourceProperty, new Binding());  
        }

WPF绑定方式的更多相关文章

  1. wpf中UserControl的几种绑定方式

    我们经常会抽取一些可重用的控件,某个属性是否需要重用,直接决定了这个属性的绑定方式. 1.完全不可重用的控件 有一些与业务强相关的控件,它们的属性完全来自ViewModel,越是相对复杂的控件,越容易 ...

  2. WPF快速入门系列(4)——深入解析WPF绑定

    一.引言 WPF绑定使得原本需要多行代码实现的功能,现在只需要简单的XAML代码就可以完成之前多行后台代码实现的功能.WPF绑定可以理解为一种关系,该关系告诉WPF从一个源对象提取一些信息,并将这些信 ...

  3. WPF 绑定StaticResource到控件的方法

    原文:WPF 绑定StaticResource到控件的方法 资源文件内的属性能否直接通过绑定应用到控件?答案是肯定的. 比如,我们要直接把下面的<SolidColorBrush x:Key=&q ...

  4. WPF绑定各种数据源之object数据源

    一.WPF绑定各种数据源索引 WPF 绑定各种数据源之Datatable WPF绑定各种数据源之object数据源 WPF绑定各种数据源之xml数据源 WPF绑定各种数据源之元素控件属性 Bindin ...

  5. RegisterAttached 两种绑定方式

    RegisterAttached 含义:使用指定的属性名称.属性类型和所有者类型注册附加属性 绑定方式:C#绑定.WPF绑定 例:需求DataViewModel为DataView的VM层,在DataV ...

  6. WPF 绑定父类属性

    原文:WPF 绑定父类属性 1.绑定父控件的属性. <ContextMenu x:Key="ContextMenuColoum"> <MenuItem Heade ...

  7. WPF绑定(Binding)(4)

    什么是绑定(Binding)? 在winform中, 我们常常会用到各种类型的赋值, 例如: button1.Text="Hello"; label.Text="Hell ...

  8. 对比MFC资源文件谈谈WPF布局方式

    对比MFC资源文件谈谈WPF布局方式 MFC方式 对于传统的MFC基于UI的应用程序设计通常分两步走,首先是设计UI,使用的是RC文件,然后是代码文件,对RC文件进行操作,如下面Figure 1 的基 ...

  9. [Spring MVC] - SpringMVC的各种参数绑定方式

    SpringMVC的各种参数绑定方式 1. 基本数据类型(以int为例,其他类似):Controller代码: @RequestMapping("saysth.do") publi ...

随机推荐

  1. POJ3189 Steady Cow Assignment(最大流)

    题目大概说,有n头牛和b块草地,每头牛心中分别对每块草地都有排名,草地在牛中排名越高牛安排在那的幸福度就越小(...),每块草地都能容纳一定数量的牛.现在要给这n头牛分配草地,牛中的幸福度最大与幸福度 ...

  2. POJ2226 Muddy Fields(二分图最小点覆盖集)

    题目给张R×C的地图,地图上*表示泥地..表示草地,问最少要几块宽1长任意木板才能盖住所有泥地,木板可以重合但不能盖住草地. 把所有行和列连续的泥地(可以放一块木板铺满的)看作点且行和列连续泥地分别作 ...

  3. 关于用了SSH连接之后,但是Chrome中访问stackoverflow超慢的原因

    FQ条件如下: SSH + Chrome + ProxySwitchySharp 其中ProxySwitchySharp已经设置了通配符: 但是打开 www.stackoverflow.com还是奇慢 ...

  4. CodeForces Round 198

    总体感觉这次出的题偏数学,数学若菜表示果断被虐.不过看起来由于大家都被虐我2题居然排到331,rating又升了74.Div2-AA. The Walltime limit per test1 sec ...

  5. python 代码片段6

    #coding=utf-8 # python常用的列表list和字符串string # tuple元组,一个身有残疾的只读列表 s='python' print s[0] print s[-1] # ...

  6. BZOJ1770 : [Usaco2009 Nov]lights 燈

    设$f[i]$表示$i$点按下开关后会影响到的点的集合,用二进制表示. 不妨设$n$为偶数,令$m=\frac{n}{2}$,对于前一半暴力$2^m$搜索所有方案,用map维护每种集合的最小代价. 对 ...

  7. BZOJ 1036 && 树链剖分

    还是太弱啊..各种数据结构只听过名字却没有一点概念..树链剖分也在这个范畴..今天来进一步深化一下教育改革推进全民素质提高. 性质 忘了在哪里看到的一篇blog有一句话讲得非常好,树链剖分不是一种数据 ...

  8. 【wikioi】2216 行星序列(线段树)

    http://wikioi.com/problem/2216/ 这题太让我感动了QAQ,让我找到了我一直以来写线段树的错误!!!! 就是,pushdown一定要放在最前面!要不然顺序会错.也就是说,当 ...

  9. 【wikioi】1191 数轴染色(线段树+水题)

    http://wikioi.com/problem/1191/ 太水的线段树了,敲了10分钟就敲完了,但是听说还有一种并查集的做法?不明觉厉. #include <cstdio> #inc ...

  10. C++ 'dynamic_cast' and Java 'instanceof' 使用对比

    在Java中,如果A是基类,B是A的派生类,那么instanceof可以用来判断一个实例对象是A还是B,相当于一个二元操作符,但与==, >, < 不同的是,它是由字母组成,是Java的保 ...