Binding的Path(路径)

Posted 1521681359qqcom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Binding的Path(路径)相关的知识,希望对你有一定的参考价值。

  Binding的源可以是控件(一个控件是另一个控件的Source、控件把自己的容器作为Source),把集合作为ItemsControls的Source,把xml作为Tree或者Menu的Source,或者是不给它Source,让他自己去找。

  1. 一个控件为另一个控件的Source
<TextBox x:Name="textBox" Text="Binding Value,ElementName=slider1" BorderBrush="Black"  Margin="5"/>
<Slider x:Name="slider1" Maximum="100" Minimum="0" Margin="5"/>    
这是两个控件Slider是TextBox的Source
这里是通过xaml语言设置的Binding,这里是Binding的标记扩展语法。等价于的C#语句为
this.textBox1.SetBinding(TextBox.TextProperty,new Binding("Value")ElementName="Slider1");
(Text等价于TextBox.TextProperty;(这个是Target). Binding Value=new Binding("Value"(这个是Path(Slide1的属性)).ElementName这个是source)

  • Path

Binding的路径支持多级路径,比如上面访问的Path是Value的属性,那么Path下面的次级路径。

Binding的路径还可以通过索引器来作为Path,比如:上面的Path是Value的属性(如果这个Value是一个集合),那么Path也可以是Value[1]来获取集合的第二个对象

Binding的路径还可以通过多级斜线的语法去寻找多级目录下面需要的Path,对应的栗子如下:

class City
    
        public string Name  get; set; 

    
    class Province
    
        public string Name  get; set; 
        public List<City> CityList  get; set; 
    
    class Country
    
        public string Name  get; set; 
        public List<Province> ProvinceList  get; set; 
    
       List<Country> countryList=new List<Country>new Country()Name="中国";
            List<string>  List=new List<string>()"Tim","Tom","Blog";
            this.textBox1.SetBinding(TextBox.TextProperty,new Binding("/")Source=List);
            this.textBox2.SetBinding(TextBox.TextProperty,new Binding("/Length")  Source=List,Mode=BindingMode.OneWay);
            this.textBox3.SetBinding(TextBox.TextProperty,new Binding("/[2]")    Source=List,Mode=BindingMode.OneWay);
  • 不带Path的Binding(Binding源本身就是数据,比如放在Resource中的文本,或者一些不属于任何对象的数值)如下,栗子如下

<StackPanel.Resources>
<sys:String x:Key="myString">
不带Path的Binding
</sys:String>
</StackPanel.Resources><TextBlock x:Name="textBlock1" TextWrapping="Wrap" Text="Binding Path=.,Source=StaticResource ResourceKey=myString" FontSize="16" Margin="5"/>

 

以上是关于Binding的Path(路径)的主要内容,如果未能解决你的问题,请参考以下文章

解决 win32-x64-64_binding.node 下载失败

“Binding Path=.”和“Binding”真的相等吗

绑定 Binding Path=.,Binding.,Binding Source={StaticResource ResourceKey="Hello"} xmlns:sys=

WPF 绑定Binding ElementName Path

WPF 绑定中的“Binding Path=.”是啥意思?

数据绑定使用DataContext作为Binding的Source