Tag: inotifypropertychanged

INotifyPropertyChanged – 事件保持为空

我正在尝试实现以下INotifyPropertyChanged扩展: 自动INotifyPropertyChanged (接受的答案) http://ingebrigtsen.info/2008/12/11/inotifypropertychanged-revisited/ 但我无法弄清楚为什么我的PropertyChanged EventHandler保持为null。 🙁 我做了一个非常简单的WPF应用程序来测试它,这是我的XAML代码: 而我的代码背后: public partial class MainWindow : Window, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private TabAccount _selTabAccount; public TabAccount SelTabAccount { get { return _selTabAccount; } set { _selTabAccount = value; PropertyChanged.Notify(() => this.SelTabAccount); } } public MainWindow() { InitializeComponent(); SelTabAccount = new TabAccount() { Test = “qwer”, […]

编写MVVM样板代码的更好方法是什么?

我发现自己最近编写了大量的样板MVVM代码,并想知道是否有一种奇特的方式可以解决所有问题? 我已经使用了实现INotifyPropertyChanged的ViewModelBase类,但这并没有解决必须编写所有访问者代码等问题。也许是通过编写一个自定义属性来执行此操作,还是通过模板系统? public MyClass : ViewModelBase { private int someVariable; public int SomeVariable { get { return this.someVariable; } set { this.someVariable = value; this.NotifyPropertyChanged(“SomeVariable”); } } }

通知外部参数更改的更改

我需要将通知更改事件附加到外部类中的封装参数。 我通常会实现INotifyPropertyChanged ,但我无法编辑外部类。 这个问题的正确方法是什么?

当另一个对象的属性发生更改时,通知一个对象

我有一个名为Page的父对象,它有一个名为Control的对象列表: public class Page { List controls {get;set;} } CustomControl类具有以下定义: public class CustomControl { string Name {get;set;} string Value {get;set;} } 比方说,例如,Page类有两个CustomControls A和B.当Custom Control A的属性Value发生变化时,可以通知自定义控件B,以便它可以更改它的某些属性。 我正在考虑在CustomControl类上实现INotifyPropertyChanged事件,现在当同一个类的另一个实例具有其Modified的某个属性时,如何通知CustomControl的实例。

将多个ObservableCollections绑定到One ObservableCollection

有一堆ObservableCollection Result并要求将它们全部组合到另一个ObservableCollection AllResults这样我就可以在listview显示它。 只是不确定如何将它们合二为一。 我创建了一个新类,将它们组合在一起,但不确定在我获得列表后它们将如何更新…所以不确定要采取哪个方向。 我知道关于INotifyPropertyChanged我只是不确定如何将它们全部组合并随着一切变化而不断更新。

确定setter中的调用者 – 或者静默设置属性

给定标准视图模型实现,当属性更改时,有没有办法确定更改的发起者? 换句话说,在下面的视图模型中,我希望“PropertyChanged”事件的“sender”参数成为调用Prop1 setter的实际对象: public class ViewModel : INotifyPropertyChanged { public double Prop1 { get { return _prop1; } set { if (_prop1 == value) return; _prop1 = value; // here, can I determine the sender? RaisePropertyChanged(propertyName: “Prop1”, sender: this); } } private double _prop1; // TODO implement INotifyPropertyChanged } 或者,是否可以将CallerMemberNameAttribute应用于属性设置器?

如何检测我的ObservableCollection中的项是否已更改

我有一个绑定到ObservableCollection 。 更新网格后,这会自动更新集合中的Product对象。 我现在要做的是在集合中的任何对象被更新时触发某种甚至触发 – 或者 – 某种类型的绑定到集合,如果任何产品已经更新,它将返回真/假的depedant。 总体目标是在我的主窗口上有一个保存按钮,如果没有对我的集合进行任何更改,则该按钮被禁用,如果已经进行了更改,则启用该按钮。 我已经阅读了INotifyPropertyChange但我没有看到我如何使用它来监控整个集合的变化。 另外,如果我在我的Product类上实现这个接口,我不会看到我的UI如何监视集合中的每个产品 – 或者它可以吗?

当字段取决于另一个字段时,通知属性更改的最佳方法

在没有set的情况下,c#通知在项目字段上更改的属性的最佳方式是什么,但取决于其他字段? 例如 : public class Example : INotifyPropertyChanged { private MyClass _item; public event PropertyChangedEventHandler PropertyChanged; public MyClass Item { get { return _item; } protected set { _item = value; OnPropertyChanged(“Item”); } } public object Field { get { return _item.Field; } } #if !C#6 protected void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler handler = PropertyChanged; […]

扩展中的CallerMemberName(INotifyPropertyChanged)

我目前正在为INotifiyPropertyChanged接口实现扩展,你可以这样读: INotifyPropertyChanged – 事件保持为空 了解更多信息。 现在我想进一步扩展这个扩展,这样我就不需要声明MemberExpression了,当从一个集合中调用它时,CallerMemberName属性完成剩下的工作。 所以我尝试执行以下操作(基于我上一次stackoverflow问题中提供的链接): public static void Notify(this PropertyChangedEventHandler EventHandler, object sender, [CallerMemberName] String propertyName = “”) { if (EventHandler != null) { EventHandler(sender, new PropertyChangedEventArgs(propertyName)); } } 这允许我像这样调用方法: this.PropertyChanged.Notify(this); //with CallerMemberName this.PropertyChanged.Notify(this, “RandomProperty”); 现在我想删除必要性以始终写入(this,..)参数,并像这样调用它: this.PropertyChanged.Notify(); //with CallerMemberName this.PropertyChanged.Notify(“RandomProperty”); 这怎么可能?

我需要在Base和子类的情况下定义INotifyPropertyChanged

我有这个Base class : public abstract class WiresharkFile { protected string _fileName; protected int _packets; protected int _packetsSent; protected string _duration; public int Packets { get { return _packets; } set { _packets = value; } } public int PacketsSent { get { return _packetsSent; } set { _packetsSent = value; } } } 而这个子类: public […]