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. vue项目中,单页图片过多,使用懒加载

    最近做项目,一页图片很多,加载的时候效果很差. 通过学习借鉴其他大神的方法,使用了插件vue-lazyload,使用这个插件,界面更美观了,加载的效果好起来. 安装 npm i vue-lazyloa ...

  2. 莫烦PyTorch学习笔记(五)——模型的存取

    import torch from torch.autograd import Variable import matplotlib.pyplot as plt torch.manual_seed() ...

  3. centos 以太坊多节点私链搭建

    环境  centos 7   搭建 3 个节点的 私链. 第一步 安装 一些依赖的 工具 yum update -y && yum install git wget bzip2 vim ...

  4. 洛谷P1081——开车旅行

    传送门:QAQQAQ 题意注意点: 1.是从前往后走,不能回头 2.小A小B轮流开,先小A开,而小A是到第二近的点(这点调试的时候查了好久) 3.若绝对值差相同海拔低的更近,而第一个询问若比值相同是海 ...

  5. day 46 Javascript学习

    Javascript学习   JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScri ...

  6. PAT甲级——A1093 Count PAT's【25】

    The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and ...

  7. jsp 页面跳转后修改数据,返回时不更新

    项目jsp页面上用隐藏input框接收获取数据,在跳转入另一页面前,js操作修改数据,但返回时发现无效. 需求是点击抽奖后机会减少一次,但是当做跳转操作后返回时,次数有缓存问题 jsp: <in ...

  8. Activiti流程定义语言

    1.流程(process) bpmn文件一个流程的根元素.一个流程就代表一个工作流. 2.顺序流(sequenceFlow) 顺序流是连接两个流程节点的连线,代表一个节点的出口.流程执行完一个节点后, ...

  9. kafka一些问题点的分析

    kakfka架构图: 理解kafka需要理解三个问题. 1.producer,broker,consumer,ZK的工作模式. broker,ZK是作为一个后台服务,而producer和consume ...

  10. Android开发 Camera2开发_2_预览分辨率或拍照分辨率的计算

    前言 不管在Camera1或者Camera2在适配不同手机/不同使用场景的情况下都需要计算摄像头里提供的分辨率列表中最合适的那一个分辨率.所以在需要大量机型适配的app,是不建议不经过计算直接自定义分 ...