Tag: inotifypropertychanged

INotifyPropertyChanged和计算属性

假设我有一个简单的类Order,它有一个TotalPrice计算属性,可以绑定到WPF UI public class Order : INotifyPropertyChanged { public decimal ItemPrice { get { return this.itemPrice; } set { this.itemPrice = value; this.RaisePropertyChanged(“ItemPrice”); this.RaisePropertyChanged(“TotalPrice”); } } public int Quantity { get { return this.quantity; } set { this.quantity= value; this.RaisePropertyChanged(“Quantity”); this.RaisePropertyChanged(“TotalPrice”); } } public decimal TotalPrice { get { return this.ItemPrice * this.Quantity; } } […]

在另一个类中更改先决条件属性时,为依赖属性引发PropertyChanged?

我有这个class级: public class Bank : INotifyPropertyChanged { public Bank(Account account1, Account account2) { Account1 = account1; Account2 = account2; } public Account Account1 { get; } public Account Account2 { get; } public int Total => Account1.Balance + Account2.Balance; public event PropertyChangedEventHandler PropertyChanged = delegate { }; public void RaisePropertyChanged([CallerMemberName] string propertyName = null) { […]

如何从后台线程正确更新数据绑定数据网格视图

我有一个实现INotifyPropertyChanged的自定义对象。 我有这些对象的集合,其中集合基于BindingList我已经为集合创建了一个绑定源,并设置了bindingsource和datagridview的数据源。 一切都很好,除了我需要从后台线程更新自定义对象的属性。 当我这样做时,我收到以下错误: BindingSource不能是自己的数据源。 不要将DataSource和DataMember属性设置为引用BindingSource的值 我发现以下post似乎有我的确切问题(和解决方案?)但我无法弄明白。 http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/3566f7c7-eb47-422e-ab09-9549a18da360/ 我在业务对象中创建并初始化了每个post的oper变量,然后将两个事件函数放入我的集合类中。 这个编译正确,但运行时毫无例外地挂起。 我看过许多post说使用Invoke / Begin Invoke,但是我没有调用UI上的任何函数,只是更新业务对象,所以我不确定在哪里调用invoke。 一个限制:我希望业务对象不知道谁在显示它(因为有多个消费者),因此将GUI引用发送到业务对象,以便我以后能够使用这些引用调用invoke不是一个选项。

BindableBase与INotifyChanged

有谁知道BindableBase是否仍然可行还是我们应该坚持使用INotifyChanged事件? 好像BindableBase很快就失去了光彩。 感谢您提供的任何信息。

在C#中有一个很好的强类型方法来做PropertyChanged事件吗?

更改属性名称并期望Visual Studio中的重命名function必须处理所有必需的重命名,除了INotifyPropertyChanged的PropertyChanged事件的属性名称之外,它必须是一个常见的事件。 有没有更好的方法以某种方式获得强类型,所以你不需要记得手动重命名它?

通过T4代码生成自动INotifyPropertyChanged实现?

我正在设置我的新项目,并且想知道如何实现我的ViewModel类确实具有INotifyPropertyChanged支持,而不必亲自手动编码所有属性。 我查看了AOP框架,但我认为他们只会用另一个依赖项炸毁我的项目。 所以我考虑用T4生成属性实现。 设置是这样的:我有一个ViewModel类,它只声明了它的Properties背景变量,然后我使用T4从它生成Property Implementations。 例如,这将是我的ViewModel: public partial class ViewModel { private string p_SomeProperty; } 然后T4将遍历源文件并查找名为“p_”的成员声明并生成如下文件: public partial class ViewModel { public string SomeProperty { get { return p_SomeProperty; } set { p_SomeProperty= value; NotifyPropertyChanged(“SomeProperty”); } } } 这种方法有一些优点,但我不确定它是否真的有效。 所以我想在StackOverflow上发布我的想法作为一个问题,以获得一些反馈,也许一些建议如何更好/更容易/更安全。

订阅嵌套(子)对象的INotifyPropertyChanged

我正在寻找一个干净而优雅的解决方案来处理嵌套(子)对象的INotifyPropertyChanged事件。 示例代码: public class Person : INotifyPropertyChanged { private string _firstName; private int _age; private Person _bestFriend; public string FirstName { get { return _firstName; } set { // Short implementation for simplicity reasons _firstName = value; RaisePropertyChanged(“FirstName”); } } public int Age { get { return _age; } set { // Short implementation for […]

如何在C#6.0中实现INotifyPropertyChanged?

这个问题的答案已被编辑,说在C#6.0中,可以使用以下OnPropertyChanged过程实现INotifyPropertyChanged: protected void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } 但是,从该答案中不清楚相应的属性定义应该是什么。 使用此构造时,在C#6.0中完整实现INotifyPropertyChanged是什么样的?