zoukankan      html  css  js  c++  java
  • 深入浅出WPF之Binding的使用(二)

      在上一篇中介绍了Binding的基本绑定方法,这一篇中我们在深入的介绍Binding的其他用法。

      Binding的源也就是数据的源头,在日常的工作中,除了使用像上一篇中的Student对象作为数据源外,我们还有更多的选择,比如控件把自己或者自己的容器或子级元素当做源,用一个控件作为另一个控件的数据源等等。

       把控件作为Binding源。  

        <Grid>
            <TextBox x:Name="Box" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="100,50,0,0"  Height="30" Width="200" Text="{Binding Path=Value,ElementName=Silder1,Mode=TwoWay}"/> 
            <Slider x:Name="Silder1" HorizontalAlignment="Left" Margin="100,120,0,0" Maximum="100" Minimum="0"    VerticalAlignment="Top" Width="200"/>
        </Grid>

      其中Text="{Binding Path=Value,ElementName=Silder1,Mode=TwoWay}"等价于C#代码:

      this.Box.SetBinding(TextBox.TextProperty, new Binding("Value") { Source=Silder1});

      或 Binding binding = new Binding() { Path = new PropertyPath("Value"), Source = Silder1 };

        this.Box.SetBinding(TextBox.TextProperty,binding);

      

      Binding还支持多级路径(通俗地将就是一路“点”下去)。比如,如果想让一个TextBox显示另外一个TextBox的文本长度,我们可以这么写:

        <Grid>
            <TextBox x:Name="Box" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="100,50,0,0"  Height="30" Width="200" /> 
            <TextBox x:Name="Box2" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="100,123,0,0"  Height="30" Width="200" Text="{Binding Path=Text.Length,ElementName= Box,Mode=OneWay}" />
        </Grid>

    等于C#代码如下:  

      Binding binding = new Binding("Text.Length") { Source=Box,Mode=BindingMode.OneWay};
      this.Box2.SetBinding(TextBox.TextProperty,binding);

  • 相关阅读:
    家庭作业 3.66
    存储器层次结构
    PHP empty()函数说明---用了N遍了就是记不住
    如何让mysql的自动递增的字段重新从1开始呢?(
    dirname(__FILE__) 的使用总结
    又回来了
    Ecshop 后台增加一个左侧列表菜单menu菜单的方法
    用PHP上传文件时$_FILES中error返回值详解
    ECSHOP站内页面跳转,避免死链
    比特币Bitcoin-qt客户端加密前后如何导入导出私钥?
  • 原文地址:https://www.cnblogs.com/akwwl/p/3421250.html
Copyright © 2011-2022 走看看