- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为两者是一样的,但为什么两者都用在同一个方法中呢?我认为有一点不同。下面是一些代码来显示两者之间的区别:
private void LoadItemListing()
{
_items = new ObservableCollection<SalesItemListingViewModel>();
foreach (ItemListing x in _sales.Items)
{
SalesItemListingViewModel itemListing = new SalesItemListingViewModel(x);
_items.Add(itemListing);
_itemAmountSum += itemListing.Amount;
itemListing.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(itemListing_PropertyChanged);
}
_items.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(_items_CollectionChanged);
}
对于 itemListing_PropertyChanged:
void itemListing_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "Amount")
{
ItemAmountSum = 0;
foreach (SalesItemListingViewModel x in Items)
ItemAmountSum += x.Amount;
}
}
还有 _items_CollectionChanged 的代码:
void _items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
SalesItemListingViewModel newItemListingViewModel = e.NewItems[0] as SalesItemListingViewModel;
newItemListingViewModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(itemListing_PropertyChanged);
}
else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
{
ItemAmountSum = 0;
foreach (SalesItemListingViewModel x in Items)
ItemAmountSum += x.Amount;
}
RaisePropertyChanged("Items");
}
我觉得有区别,但我不确定。有人可以解释一下有什么不同吗?
最佳答案
PropertyChanged
表示属性的值 已更改。 CollectionChanged
事件表明集合的内容 已更改(不是集合本身:它仍然是同一个集合实例,但元素已被添加/删除/替换)。
关于c# - PropertyChangedEventHandler 和 NotifyCollectionChangedEventHandler 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670259/
我从 MVVM 开始。 我的应用程序使用这种“模式(PM 模式——我们不要在这里讨论这个:))”并且工作正常;该项目非常简单,据说对于初学者来说很容易掌握!如果只是... :) 有一件事让我感到困惑,
PropertyChangedEventHandler 是如何使用的?你能告诉我类的 Initalize 方法中的这段代码是做什么的吗?我们正在处理的项目中有一个类具有私有(private) Init
所以我已经将事件设置为一个类 void item_PropertyChanged(object sender, PropertyChangedEventArgs e) { }
在我的 UI 代码中,我有很多具有相同基本框架的类: 派生自 INotifyPropertyChanged 包含以下代码: void NotifyPropertyChanged(String info
我在 xamarin.forms 中创建了 Android 应用程序,但问题是 PropertyChangedEventHandler 导致内存泄漏。 我的代码: protected virtual
我有以下类将作为绑定(bind)源: public class Timeline : Canvas, INotifyPropertyChanged { public static readonly
这是一个非常简单的问题,但我想知道是否有人可以解释第 4 行实际上在做什么?所以第一行给处理程序一个事件。我真的不知道在什么情况下处理程序会返回 null 或最后一行的作用。 当您将对象和更改的属性传
现在的问题是,
当我观察变量时,我的 PropertyChanged 事件已正确设置,但在代码的某处它被重置为 null,我不知道如何找出发生这种情况的位置。 代码如下: public event PropertyC
我的 WPF 应用程序中有一个属性,我试图将其绑定(bind)到 UI。当我直接在 View 模型中更新属性时,它会按预期工作。但是,当我尝试使用事件从另一个类中更新此属性时,绑定(bind)似乎不起
我对 INotifyPropertyChanged 的 PostSharp 实现没有什么问题。 PostSharp 在编译时添加了 PropertyChangedEventHandler Proper
我认为两者是一样的,但为什么两者都用在同一个方法中呢?我认为有一点不同。下面是一些代码来显示两者之间的区别: private void LoadItemListing() { _items =
我有以下代码,其中有一个“PropertyChangedEventHandler”。我看到它有一个属性 PropertyChangedEventHandler,但我没有看到它调用“new Proper
到目前为止,我的模型实现了 INotifyPropertyChanged,并且每个属性都会引发此事件。几乎所有 ViewModel 都通过 PropertyChangedEventHandler 监听
文章http://msdn.microsoft.com/en-us/magazine/dd419663.aspx具有以下代码示例: public event PropertyChangedEventH
我已经在下面的类中实现了 INotifyPropertyChanged public class FactoryItems : INotifyPropertyChanged {
我做了一个小项目来学习一点关于 MVVM 的知识。这是一个计算器,可以计算您何时可以下类回家。 我做了一个UserControl有两个文本框和一个标签作为简单的“时间选择器”。这个 Usercontr
我正在尝试使用 C# 和 XAML 遵循 MVVM 设计范例。我遇到了嵌套用户控件的问题。我正在尝试将嵌套用户控件上的元素绑定(bind)到 ViewModel 中的一个值(通过 DataContex
在我的 WPF 应用程序中,我实现了 LINQ to SQL 查询,该查询填充与 ListView 连接的 Observable 集合。正是在这个方法中,我可以从某个地方调用它,它工作正常: priv
我正在按照建议开发 wcf 服务 here .它解决了我最初在开发原始 .NET 2.0 Web 服务时遇到的 namespace 冲突问题,但我又遇到了另一个问题。 我试图传递给 wcf 服务的对象
我是一名优秀的程序员,十分优秀!