zoukankan      html  css  js  c++  java
  • WPF之Binding的三种简单写法

    环境

    类代码

    public class Person:INotifyPropertyChanged
    {
    private string name;
    public string Name
    {
    get { return this.name; }
    set
    {
    this.name = value;
    notifyPropertyChanged("Name");
    }
    }
    private int age;
    public int Age
    {
    get { return this.age; }
    set
    {
    this.age = value;
    notifyPropertyChanged("Age");
    }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    public void notifyPropertyChanged(string propertyName)
    {
    if (PropertyChanged != null)
    {
    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
    }

    窗体代码

    public partial class BindTest : Window
    {
    public Person per;
    public BindTest()
    {
    InitializeComponent();
    per = new Person { Age = 100, Name = "深入浅出WPF" };
    Binding b = new Binding();
    b.Source = per;
    b.Path = new PropertyPath("Name");
    BindingOperations.SetBinding(textbox, TextBox.TextProperty, b);
    box.DataContext = per;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {

    text.SetBinding(TextBox.TextProperty, new Binding("Name") { Source = per });
    }
    }

    XAML代码

    <StackPanel >
    <TextBox Margin="10" Height="40" x:Name="textbox"></TextBox>
    <TextBox Margin="10" Height="40" x:Name="text"></TextBox>
    <TextBox Margin="10" Height="40" Text="{Binding Name}" x:Name="box"></TextBox>
    <Button Height="40" Click="Button_Click"></Button>
    </StackPanel>

    三种写法

    1,

    C#

    per = new Person { Age = 100, Name = "深入浅出WPF" };

    Binding b = new Binding();

    b.Source = per;

    b.Path = new PropertyPath("Name");

    BindingOperations.SetBinding(textbox, TextBox.TextProperty, b);

    Xamll

    <TextBox Margin="10" Height="40" x:Name="textbox"></TextBox>

    2

    C#

    text.SetBinding(TextBox.TextProperty, new Binding("Name") { Source = per });

    Xaml

    <TextBox Margin="10" Height="40" x:Name="text"></TextBox>

    3

    C#

    InitializeComponent();

    box.DataContext = per;

    Xaml

    <TextBox Margin="10" Height="40" Text="{Binding Name}" x:Name="box"></TextBox>

    其中Text="{Binding Name}"与Text="{Binding Path=Name}"

  • 相关阅读:
    递归算法
    抽象类(abstract class)和接口(interface)
    静态变量和实例变量
    java 工厂化生产
    win10安装使用ffmpeg+python中使用ffmpy
    C++ Concurrency in Action 读书笔记三:并发操作的同步
    C++ Concurrency in Action 读书笔记二:用mutex互斥锁保护在线程间共享的数据
    C++ Concurrency in Action 读书笔记一:thread的管理
    C++正则表达式 <regex>
    CMake使用Boost
  • 原文地址:https://www.cnblogs.com/wangboke/p/5311336.html
Copyright © 2011-2022 走看看