Tag: inotifypropertychanged

何时使用WPF依赖属性与INotifyPropertyChanged

对于在视图模型中引发INotifyPropertyChanged.PropertyChanged的简单.NET属性是否足够,人们是否有任何指导? 那么你什么时候想要移动到一个完整的依赖项属性? 或者DP是主要用于观看?

C#/ WPF:PropertyChanged在ViewModel中的所有属性?

我有一个这样的课: public class PersonViewModel : ViewModelBase //Here is the INotifyPropertyChanged Stuff { public PersonViewModel(Person person) { PersonEntity = person; } public Person PersonEntity { get { return PersonEntity.Name; } private set { PersonEntity.Name = value; RaisePropertyChanged("PersonEntity"); } public string Name { get { return PersonEntity.Name; } set { PersonEntity.Name = value; RaisePropertyChanged("Name"); } public int […]

实现INotifyPropertyChanged时,比替代方法慢吗?

有很好的文章提出了实现INotifyPropertyChanged不同方法 。 考虑下面的基本实现: class BasicClass : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void FirePropertyChanged(string propertyName) { var handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } private int sampleIntField; public int SampleIntProperty { get { return sampleIntField; } set { if (value != sampleIntField) { sampleIntField = value; FirePropertyChanged("SampleIntProperty"); // ouch ! […]

如何在不使用string名称的情况下提升PropertyChanged事件

如果能够在不明确指定更改属性的名称的情况下引发“PropertyChanged”事件,那将是一件好事。 我想要做这样的事情: public string MyString { get { return _myString; } set { ChangePropertyAndNotify<string>(val=>_myString=val, value); } } private void ChangePropertyAndNotify<T>(Action<T> setter, T value) { setter(value); PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(setter.Method.Name)); } } 在这种情况下,收到的名称是lambda-method的名称:“<set_MyString> b__0”。 我可以肯定,修剪“<set_”和“> b__0”将始终提供正确的属性名称? 有没有其他通知有关财产变化(从财产本身)? 谢谢。

如何使用EF 4.x DbContext生成器获取属性更改通知

我正在玩Entity Framework 4.3,所以我使用DbContext生成器来创build上下文和实体类。 使用默认的EF 4代码生成器模板,实体类实现INotifyPropertyChanged,并在属性设置器中添加Changing和Changed部分方法。 当我使用EF 4.x DbContext生成器时,如下图所示,实体类要轻得多,并且不包含任何跟踪属性更改的方法。 这里是一个例子: //—————————————————————————— // <auto-generated> // This code was generated from a template. // // Manual changes to this file may cause unexpected behavior in your application. // Manual changes to this file will be overwritten if the code is regenerated. // </auto-generated> //—————————————————————————— using System; using System.Collections.Generic; […]

在MVVM模型中,模型应该实现INotifyPropertyChanged接口吗?

我对MVVM模式下的View和ViewModel有清晰的认识。 我打算在我的应用程序中实现MVVM模式。 我正面临一个关于模型的问题。 我有.xml文件parsing并显示在视图上的信息。 我只需要第一时间通知模型的变化。 从需求开始,我需要得到通知。 那么如何实现这个模型? 我应该在模型类中实现INotifyPropertyChanged接口吗? (我读的模型不应该实现INotifyPropertyChanged接口,因为它是特定于WPF)

自动INotifyPropertyChanged

有没有办法自动得到一个类的属性变化的通知,而不必在每个setter中写入OnPropertyChanged? (我有数百个属性,我想知道他们是否改变了)。 安东build议dynamic代理 。 实际上,我曾经使用过“Castle”库来做类似的事情,虽然它减less了我不得不写的代码数量,但是它为我的程序启动时间(ymmv)增加了大约30秒 – 因为它是运行时解决 我想知道是否有一个编译时间的解决scheme,也许使用编译时间属性… Slashene和TcKs给出的build议会产生重复的代码 – 不幸的是,并不是所有的属性都是m_Value = value的简单情况 – 它们中的很多在setter中都有自定义代码,所以snippets和xml中的Cookie代码并不是真的可行我的项目也是。

项目更改时通知ObservableCollection

我在这个链接find ObservableCollection在其中的项目更改时不会注意到(即使使用INotifyPropertyChanged) 一些技巧通知Observablecollection项目已经改变。 在这个链接TrulyObservableCollection似乎是我在找什么。 public class TrulyObservableCollection<T> : ObservableCollection<T> where T : INotifyPropertyChanged { public TrulyObservableCollection() : base() { CollectionChanged += new NotifyCollectionChangedEventHandler(TrulyObservableCollection_CollectionChanged); } void TrulyObservableCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.NewItems != null) { foreach (Object item in e.NewItems) { (item as INotifyPropertyChanged).PropertyChanged += new PropertyChangedEventHandler(item_PropertyChanged); } } if (e.OldItems != null) { foreach […]

ObservableCollection在其中的项目更改时不会注意到(即使使用INotifyPropertyChanged)

有谁知道为什么这个代码不起作用: public class CollectionViewModel : ViewModelBase { public ObservableCollection<EntityViewModel> ContentList { get { return _contentList; } set { _contentList = value; RaisePropertyChanged("ContentList"); //I want to be notified here when something changes..? //debugger doesn't stop here when IsRowChecked is toggled } } } public class EntityViewModel : ViewModelBase { private bool _isRowChecked; public bool IsRowChecked { […]

实现INotifyPropertyChanged – 是否存在更好的方法?

微软应该为INotifyPropertyChanged实现一些动作,就像在自动属性中一样,只需指定{get; set; notify;} {get; set; notify;} {get; set; notify;}我认为这样做很有意义。 还是有什么并发症呢? 我们是否可以在我们的房产中实施类似“通知”的内容? 有没有一个优雅的解决scheme在您的类中实现INotifyPropertyChanged或唯一的方法是通过提高每个属性中的PropertyChanged事件。 如果没有,我们可以写一些东西来自动生成一段代码来提高PropertyChanged事件?