问题标签 [inotifypropertychanged]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
26760 浏览

c# - 在未更新 UI 元素的代码中定义的 WPF 数据绑定问题

我需要在代码中定义新的 UI 元素以及数据绑定,因为它们将在运行时之后实现。这是我正在尝试做的简化版本。

数据模型:

代码绑定:

首次绑定数据时,文本块将更新为正确的门牌号。然后,如果我稍后在代码中更改门牌号,则会触发该书的 PropertyChanged 事件,但不会更新文本块。谁能告诉我为什么?

谢谢,本

0 投票
3 回答
10632 浏览

c# - 如何从后台线程正确更新数据绑定 datagridview

我有一个实现 INotifyPropertyChanged 的​​自定义对象。我有这些对象的集合,其中集合基于 BindingList 我已经为集合创建了绑定源,并设置了 bindingsource 和 datagridview 的数据源。

一切都很好,除了我需要从后台线程更新自定义对象的属性。当我这样做时,我收到以下错误:

BindingSource 不能是它自己的数据源。不要将 DataSource 和 DataMember 属性设置为引用回 BindingSource 的值

我发现以下帖子似乎有我的确切问题(和解决方案?),但我无法弄清楚。

http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/3566f7c7-eb47-422e-ab09-9549a18da360/

我在我的业务对象中创建并初始化每个帖子的操作变量,然后我将两个事件函数放入我的集合类中。这编译正确,但运行时无异常挂起。

我看到很多帖子说要使用 Invoke/Begin Invoke,但我没有在 UI 上调用任何函数,只是更新业务对象,所以我不确定将调用调用放在哪里。

一个限制:我希望业务对象不知道谁在显示它(因为有多个消费者),因此将 GUI 引用发送到业务对象以便我以后能够使用这些引用调用调用不是一种选择。

0 投票
4 回答
2306 浏览

c# - 在c#中找出谁在监听PropertyChangedEventHandler

我有一个 WPF 表单,我正在处理数据绑定。我得到了从 INotifyPropertyChanged 引发的事件,但我想看看如何获​​取正在监听的项目的列表,我启动了连接的处理程序。

我怎样才能做到这一点?

0 投票
2 回答
1758 浏览

silverlight - 如何让 PropertyChanged 事件冒泡?

我有一个对象层次结构(对象A,B),每个对象都实现INotifyPropertyChanged了......

A 有 B 类型的成员,B 有 C 的成员,C 是 bool 类型

当 C 更改时,它的PropertyChanged事件被触发,但是这不会触发 B 的属性更改事件。因此 A 不会对 B 的变化做出反应。

有没有什么好的方法可以让这个冒泡?

0 投票
7 回答
3705 浏览

wpf - INotifyPropertyChanged 问题

首先,我想说下面的示例过于简单化。假设您已绑定 WPF 控件。

Window 绑定到 Person 类,该类实现INotifyPropertyChanged并在表单中具有 Name setter

即,每当用户尝试从 UI 更改它时,_name 都会被分配“某个名称”。但是这个示例不起作用。我将 TextBox 中的名称更改为某个值,按选项卡强制焦点移动到 Button,尽管触发了 PropertyChanged 事件,但 TextBox 中的值保持不变。

你能解释一下为什么会这样吗?据我了解PropertyChanged,事件会强制 UI 从属性中重新读取值并显示它们,但在我的示例中,数据绑定文本框中的值未更新。


再次。我知道这是该属性的不良实现,但我想重复一遍,这是过于简单化了。这只是一个样本。但无论如何,PropertyChanged 表示属性已更改并且应该更新但它没有。

0 投票
3 回答
8791 浏览

c# - 调用 INotifyPropertyChanged 的​​ PropertyChanged 事件的最佳方式是什么?

当您实现 INotifyPropertyChanged 接口时,您负责在每次更新类中的属性时调用 PropertyChanged 事件。

这通常会导致以下代码:

即每个属性12 行。

如果能够像这样装饰自动属性,那就简单多了:

但不幸的是,这是不可能的(例如,请参阅 msdn 上的这篇文章)

如何减少每个属性所需的代码量?

0 投票
2 回答
3968 浏览

wpf - WPF 实现 INotifyPropertyChanged

我已经设置了一个属性并实现了 INotifyPropertyChanged

像这样...

我在其他类上使用了这种精确设置,但由于某种原因,在 Notify 方法中,PropertyChanged 变量返回 null。

在其他类中,当此方法起作用时,PropertyChanged 事件不为空并评估为委托?我在这里想念什么?

我从类内部调用公共访问器会有所作为吗?

0 投票
1 回答
858 浏览

winforms - 防止数据绑定中的属性更改并强制绑定控件显示当前值

我有

该类实现 INotifyPropertyChanged 并且我绑定到 WinForm 控件中的 TextBox 控件。

问题是当用户在文本框中键入一个值时,即使绑定的值仍然与 IsNew 为 false 的事实相同,新值也会显示在文本框中。(我尝试过使用这两种类型的 DataSourceUpdateMode。)

我已阅读INotifyPropertyChanged 问题,并且我相信 Windows 窗体的工作方式基本相同,因为事件的发起者也不会检测到处理事件。

我可以在 BO 类中做些什么来强制控件响应 INotifyPropertyChanged 事件吗?或者我可以在 BO 类中做些什么来让控件显示正确的值?

我意识到我可以在 GUI 代码中以各种方式处理这个问题,但这不是我的目标。

0 投票
13 回答
33054 浏览

c# - 自动 INotifyPropertyChanged

有没有办法自动获得类中属性更改的通知,而不必在每个 setter 中编写 OnPropertyChanged?(我有数百个属性,我想知道它们是否已更改)。


Anton 建议使用动态代理。实际上,我过去曾将“Castle”库用于类似的东西,虽然它确实减少了我必须编写的代码量,但它使我的程序启动时间(ymmv)增加了大约 30 秒——因为它是一个运行时解决方案。

我想知道是否有编译时解决方案,也许使用编译时属性......


Slashene 和 TcKs 给出了生成重复代码的建议 - 不幸的是,并非我的所有属性都是 m_Value = value 的简单案例 - 它们中的许多在设置器中都有自定义代码,因此来自片段和 xml 的千篇一律的代码对于我的项目也是。

0 投票
1 回答
897 浏览

winforms - 子列表更改时我应该如何处理 INotifyPropertyChanged

我有一组数据对象,用于实现 INotifyPropertyChanged 接口的数据绑定,我试图弄清楚如何处理复杂类型的属性。

如果我有类似的东西

我知道该怎么做,但是如果属性是可变的怎么办,大概我也应该通知类型的更改。

如果属性本身实现了 INotifyPropertyChanged,大概我可以处理该事件并将其冒泡,但如果引发 ListChangedEvent(比如它是 IBindingList),我是否应该这样做?

这是 .NET 2.0,因此不允许依赖属性等。