PropertyChangeNotification属性更改通知

实现效果:
1.拍卖金额自动随属性值变化而通知界面绑定的值变化。


关键词 :

  1. INotifyPropertyChanged
  2. ObservableCollection<T>

界面xaml:
数据模板

<DataTemplate x:Key="BidItemDataTemplate">
<Canvas Width="300" Height="20">
<TextBlock FontSize="14" Foreground="DarkSlateGray"
Width="180" Canvas.Left="0" Text="{Binding Path=BidItemName}"/>
<TextBlock FontSize="14" Foreground="DarkSlateBlue"
Text="$" Canvas.Left="180"/>
<TextBlock FontSize="14" Foreground="DarkSlateBlue"
Width="80" Canvas.Left="190" Text="{Binding Path=BidItemPrice}"/>
</Canvas>
</DataTemplate>
<ItemsControl Name="MyListBox" DockPanel.Dock="Top" Background="Silver"
Width="315" Height="80"
ItemsSource="{Binding Source={StaticResource MyDataSource}}"
ItemTemplate="{StaticResource BidItemDataTemplate}"/>

后台代码:
数据类,显示其中的一个属性更通知:

public decimal BidItemPrice
{
get { return _biditemprice; }
set
{
if (_biditemprice.Equals(value) == false)
{
_biditemprice = value;
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged("BidItemPrice");
}
}
}

具体业务代码:
初始化类时执行每隔一段时间,更新属性的值,然后作为绑定源反映到界面数值变动。

public class BidCollection : ObservableCollection<Bid>
{
private readonly Bid _item1 = new Bid("Perseus Vase", (decimal) 24.95);
private readonly Bid _item2 = new Bid("Hercules Statue", (decimal) 16.05);
private readonly Bid _item3 = new Bid("Odysseus Painting", (decimal) 100.0); public BidCollection()
{
Add(_item1);
Add(_item2);
Add(_item3);
CreateTimer();
} private void Timer1_Elapsed(object sender, ElapsedEventArgs e)
{
_item1.BidItemPrice += (decimal) 1.25;
_item2.BidItemPrice += (decimal) 2.45;
_item3.BidItemPrice += (decimal) 10.55;
} private void CreateTimer()
{
var timer1 = new Timer
{
Enabled = true,
Interval = 2000
};
timer1.Elapsed += Timer1_Elapsed;
}
}

扩展:

  1. 设置 Enabled 到 true 等同于调用 Start, ,而设置 Enabled 到 false 等同于调用 Stop。
  2. 如果 Enabled 设置为 true 和 AutoReset 设置为 false, ,则 Timer 引发 Elapsed 事件仅当第一次间隔到期。
  3. 要引发的信号 Elapsed 事件总是在排队等待执行 ThreadPool 线程。 这可能会导致 Elapsed 后引发事件 Enabled 属性设置为 false。??

WPF:数据绑定--PropertyChangeNotification属性更改通知的更多相关文章

  1. WPF——数据绑定及属性改变事件

    一.首先需要封装一下文本框的属性,并且在实体类中添加一个实体类的属性改变函数 public class User : INotifyPropertyChanged //INotifyPropertyC ...

  2. 属性更改通知(INotifyPropertyChanged)——针对ObservableCollection

    问题 在开发webform中,wpf中的ObservableCollection<T>,MSDN中说,在添加项,移除项时此集合通知控件,我们知道对一个集合的操作是CURD但是恰恰没有Upd ...

  3. WPF数据绑定详解

    元素绑定 数据绑定最简单的形式是,源对象是WPF元素而且源属性是依赖属性.依赖项属性具有内置的更改通知支持,当在源对象中改变依赖项属性的值时,会立即更新目标对相中的绑定属性. <!--Xaml程 ...

  4. 微软原文翻译:适用于.Net Core的WPF数据绑定概述

    原文链接,大部分是机器翻译,仅做了小部分修改.英.中文对照,看不懂的看英文. Data binding overview in WPF 2019/09/19 Data binding in Windo ...

  5. 【WPF学习笔记】之WPF基础:依赖关系属性和通知

    这些天来,对象似乎已经忙得晕头转向了.每个人都希望它们做这做那.Windows® Presentation Foundation (WPF) 应用程序中的典型对象会接到各种各样不同的请求:有要求绑定到 ...

  6. WPF 数据绑定 1_1 基础知识&绑定到元素属性

    A.数据绑定基础: 数据源对象:WPF将从该对象中提取信息,交由目标对象进行显示. 目标对象:从数据源中提取信息,并赋给该对象的属性. B.绑定到元素属性 最简单的绑定情形则是将一个源对象指定为一个W ...

  7. wpf 自定义依赖性属性 作用之一 对数据绑定的支持

    依赖属性:定义,声明,注册 依赖属性,在数据绑定中,数据绑定,分为源对象(数据源)和目标对象(显示数据). 只有源对象为依赖对象,属性为依赖属性时,该属性才会在属性发生变化时,通知目标对象进行数据更改 ...

  8. WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果

    原文:WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果   本以为Label也有TextChanged 事件,但在使 ...

  9. WPF的依赖属性

    Windows Presentation Foundation (WPF) 提供了一组服务,这些服务可用于扩展公共语言运行时 (CLR)属性的功能,这些服务通常统称为 WPF 属性系统.由 WPF 属 ...

随机推荐

  1. 深入理解Java虚拟机(类加载机制)

    文章首发于微信公众号:BaronTalk 上一篇文章我们介绍了「类文件结构」,这一篇我们来看看虚拟机是如何加载类的. 我们的源代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行.虚拟机 ...

  2. day1-初识Python以及环境搭建

    ---恢复内容开始--- 为什么学习Python? 软件质量:python的可读性很强,易于理解,非常接近于人类的自然语言. 提高开发者效率:相当于C,C++和JAVA等编译/静态型语言,Python ...

  3. crontab[计划任务],tar[压缩],grep[查找]

    计划任务:1.新建一个计划任务:crontab -e -----> 3*/1 * * * * date >> /tmp/data.txt查看计划任务:crontab -l.如果超过6 ...

  4. configparser 配置文件模块

    #_author:star#date:2019/11/7# configparser 配置文件模块import configparserconfig=configparser.ConfigParser ...

  5. JDK源码阅读--StringBuilder

    public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, Char ...

  6. Spring MVC(六)--通过URL传递参数

    URL传递参数时,格式是类似这样的,/param/urlParam/4/test,其中4和test都是参数,这就是所谓的Restful风格,Spring MVC中通过注解@RequestMapping ...

  7. 爬虫(二)建立代理ip池

    之前我们说网站反爬虫的一个常用方法是检测ip,限制访问频率.所以我们要通过设置代理ip的办法绕过这个限制.有不少提供免费代理ip的网站,像https://www.xicidaili.com/nt/,我 ...

  8. C++面向对象高级编程(下)第一周-Geekband

    勿在浮沙筑高台 革命尚未成功,同志仍需努力 <h1> Conversion Function</h1> class Fraction { public: Fraction(in ...

  9. vue 生产环境和测试环境的配置

    我们引用的是axios 给src目录增加 api 文件夹 里面写上index.js // 配置API接口地址 var root = process.env.API_ROOT // 引用axios va ...

  10. Linux CentOS6.5安装Nginx1.8.0

    一. 安装nginx 1. 准备1.8.0安装包 nginx-1.8.0.tar.gz 2. 安装第三方依赖 yum install gcc-c++ yum install -y pcre pcre- ...