• Binding的源与路径


    1.把控件作为Binding的源

    例子:拖动Slider,输入框中的值也会跟着改变,或在输入框中输入数值,滑动条也会自动移动

    <Window x:Class="把控件作为Binding源.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <StackPanel>
                <TextBox x:Name="textBox1" Text="{Binding Path=Value,ElementName=slider1,Mode=Default,UpdateSourceTrigger=PropertyChanged}" Margin="5" BorderBrush="Black"></TextBox>
                <Slider x:Name="slider1" Maximum="100" Minimum="0" Margin="5"></Slider>
            </StackPanel>
        </Grid>
    </Window>
    View Code

     2.控制Binding的方向

    设置属性:Mode

    3.更新时操作

     设置属性:UpdateSourceTrigger

    4.Path路径

    1)前台与后台的代码比较:

    前台:

    <Window x:Class="Path路径.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="279.8" Width="525" Loaded="Window_Loaded">
        <Grid>
            <StackPanel>
                <TextBox x:Name="textBox1" Text="{Binding Path=Value,ElementName=slider1,Mode=Default,UpdateSourceTrigger=PropertyChanged}" BorderBrush="Black" Margin="4"></TextBox>
                <TextBox x:Name="textbox2" BorderBrush="Black" Margin="4" Text="1"></TextBox>
                <Slider x:Name="slider1" Maximum="100" Minimum="0"></Slider>
                
                <TextBox x:Name="textBox3" Margin="5" BorderBrush="Red"></TextBox>
                <TextBox x:Name="textBox4" Text="{Binding Path=Text.Length,ElementName=textBox3,Mode=OneWay}" Margin="5" BorderBrush="Red"></TextBox>
                <TextBox x:Name="textBox6" Margin="5" BorderBrush="Red"></TextBox>
    
                <TextBox x:Name="textBox7" Margin="5" BorderBrush="Blue"></TextBox>
                <TextBox x:Name="textBox8" Text="{Binding Path=Text[3],ElementName=textBox7,Mode=OneWay}" Margin="5" BorderBrush="Blue"></TextBox>
                <TextBox x:Name="textBox9" Margin="5" BorderBrush="Blue"></TextBox>
            </StackPanel>
        </Grid>
    </Window>
    View Code

    后台:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace Path路径
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                Binding binding = new Binding() { Path = new PropertyPath("Value"), Source = this.slider1 };
                this.textbox2.SetBinding(TextBox.TextProperty, binding);
    
                this.textBox6.SetBinding(TextBox.TextProperty, new Binding("Text.Length") { Source = this.textBox3, Mode = BindingMode.OneWay });
    
                this.textBox9.SetBinding(TextBox.TextProperty, new Binding("Text[3]") { Source = this.textBox7, Mode = BindingMode.OneWay });
            }
        }
    }
    View Code

    截图:

    2)斜线语法

    第一个例子:

    XAML:

    <Window x:Class="Path路径.Window1"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="Window1" Height="124.176" Width="300" Loaded="Window_Loaded">
        <Grid>
            <StackPanel>
                <TextBox x:Name="textBox1" Margin="5" BorderBrush="Blue"></TextBox>
                <TextBox x:Name="textBox2" Margin="5" BorderBrush="Blue"></TextBox>
                <TextBox x:Name="textBox3" Margin="5" BorderBrush="Blue"></TextBox>
            </StackPanel>
        </Grid>
    </Window>
    View Code

    C#:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Shapes;
    
    namespace Path路径
    {
        /// <summary>
        /// 当使用一个集合或者DataView作为Binding的源时,如果想把它的默认元素当作Path使用,需要以下的语法
        /// </summary>
        public partial class Window1 : Window
        {
            public Window1()
            {
                InitializeComponent();
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                List<string> stringList = new List<string>() { "Tomi", "Tim", "Blogog" };
                this.textBox1.SetBinding(TextBox.TextProperty, new Binding("/") { Source = stringList });
                this.textBox2.SetBinding(TextBox.TextProperty, new Binding("/Length") { Source = stringList, Mode = BindingMode.OneWay });
                this.textBox3.SetBinding(TextBox.TextProperty, new Binding("/[2]") { Source = stringList, Mode = BindingMode.OneWay });
            }
        }
    }
    View Code

    截图:

    第二个例子:

    XAML:

    <Window x:Class="Path路径.Window2"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="Window2" Height="121.978" Width="300" Loaded="Window_Loaded">
        <Grid>
            <StackPanel>
                <TextBox x:Name="textBox1" Margin="5" BorderBrush="Blue"></TextBox>
                <TextBox x:Name="textBox2" Margin="5" BorderBrush="Blue"></TextBox>
                <TextBox x:Name="textBox3" Margin="5" BorderBrush="Blue"></TextBox>
            </StackPanel>
        </Grid>
    </Window>
    View Code

    C#:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Shapes;
    
    namespace Path路径
    {
        /// <summary>
        /// 如果集合元素的属性仍然是一个集合时,使用多斜线语法
        /// </summary>
        public partial class Window2 : Window
        {
            public Window2()
            {
                InitializeComponent();
            }
    
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                List<Country> countryList = new List<Country>(){
                    new Country(){
                        Name = "中国",
                        ProvinceList = new List<Province>(){
                            new Province(){
                                Name = "四川",
                                CityList = new List<City>(){
                                    new City(){
                                        Name = "成都"
                                    }
                                }
                            }
                        }
                    }
                };
    
                this.textBox1.SetBinding(TextBox.TextProperty, new Binding("/Name") { Source = countryList });
                this.textBox2.SetBinding(TextBox.TextProperty, new Binding("/ProvinceList/Name") { Source = countryList });
                this.textBox3.SetBinding(TextBox.TextProperty, new Binding("ProvinceList/CityList/Name") { Source = countryList });
            }
        }
    }
    View Code

    截图:

     

  • 相关阅读:
    登录界面的实现
    构建之法阅读笔记02
    第三周周总结
    四则运算 2
    构建之法阅读笔记01
    随机生成四则运算题目
    Node.js_express_服务器渲染页面 ejs
    BOM 浏览器对象模型_window.navigator
    Node.js_express_浏览器存储技术 Cookie(服务器将少量数据交于浏览器存储管理)
    BOM 浏览器对象模型_XMLHttpRequest 对象
  • 原文地址:https://www.cnblogs.com/KeenLeung/p/3532979.html
Copyright © 2020-2023  润新知