WPF数据绑定

前台绑定后台数据,实时更新

新建一个前台xaml文件(这里已前几篇新建的PageMes页面为例),我们在前台添加一个文本框控件,现在要实现的是将前台TextBox的内容与后台变量进行绑定,当后台数据更新时,前台页面的内容显示也实时更新。

1.第一步,前台PageMes.xaml文件中添加一个TextBox,内容如下:

...
  <Button Content="导入文件" Click="ImportFile" BorderThickness="0" />
  <TextBox Name="textbox_status" TextAlignment="Right" Text="{Binding Text}"/>
...

Text="{Binding Text}"将前台TextBox的内容与Text属性绑定了(当前仅指定了TextBox与某实例的Text属性绑定)

2.第二步,后台PageMes.xaml.cs文件对应添加如下内容:

namespace wpfbase {
  public partial class PageMes : Page {
    private StatusText statustext; // 实例化一个StatusText类成员
    public PageMes() {
      InitializeComponent();
      statustext = new StatusText(); // 初始化类成员
      // 将前台名为textbox_status控件的数据绑定为statustext成员
      this.textbox_status.DataContext = statustext;
    }
    ...
    private void ImportFile(object sender, RoutedEventArgs e) {
      Microsoft.Win32.OpenFileDialog dialog = new Microsoft.Win32.OpenFileDialog();
      dialog.DefaultExt = ".png";
      dialog.Filter = @"图像文件(*.jpg,*.png,*.tif,*.gif)|*jpeg;*.jpg;*.png;*.tif;*.tiff;*.gif
      |JPEG(*.jpeg, *.jpg)|*.jpeg;*.jpg|PNG(*.png)|*.png|GIF(*.gif)|*.gif
      |TIF(*.tif,*.tiff)|*.tif;*.tiff";
      Nullable<bool> result = dialog.ShowDialog();
      if(result == true) {
        statustext.Text = dialog.FileName;  // statustext成员Text更新
      }
    }
  }
  ...
  class StatusText : INotifyPropertyChanged {
    public event PropertyChangedEventHandler PropertyChanged;
    private string text;
    public string Text {  // 前台Binding的属性值为此处的Text
      get { return text;}
      set { 
        text = value;
        if (PropertyChanged != null)  // 只要StatusText类的成员改变即执行
          PropertyChanged(this, new PropertyChangedEventArgs("Text"));
      }
    }
  }
}

说明:
1.我们在wpfbase空间中定义了一个类StatusText继承至INotifyPropertyChanged抽象类,在这个类中,我们定义了一个PropertyChanged事件类型,同时为该类定义了成员Text,当Text成员有变化时,就会触发产生PropertyChanged事件,这样就实现了内容刷新。
2.在PageMes的构造函数中,我们初始化一个StatusText类型的变量statustext,并将该变量与前台textbox_status文本框数据绑定,在第一步中我们已经实现了此文本框的内容绑定数据的Text的属性,所以,textbox_status文本框绑定的是statustext变量的Text属性。
3.在ImportFile函数,statustext.Text = dialog.FileName; 修改statustext成员Text的值,实现对前台数据的实时更新。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值