zoukankan      html  css  js  c++  java
  • 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"/>

  • 相关阅读:
    工业相机基础知识
    软件测试最常用的 SQL 命令 | 掌握基本查询、条件查询、聚合查询
    一文掌握软件测试常用SQL命令
    PageObject设计模式在 UI 自动化中的实践(QQ 邮箱登陆为例)
    测试开发必备--搞定PO设计模式
    Junit5 + YAML 参数化和数据驱动,让 App 自动化测试更高效(一)
    快速搞定APP移动端自动化测试
    接口自动化测试的 “能” 与 “不能”
    如何精通接口测试?
    测试开发必备:Dubbo-admin+Zookeeper 的环境搭建实操
  • 原文地址:https://www.cnblogs.com/1521681359qqcom/p/11291813.html
Copyright © 2011-2022 走看看