问题标签 [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 投票
4 回答
846 浏览

c# - 观察对象图的变化

有没有办法观察对象图上任何对象的变化,并根据该变化做一些事情?

可以说我有以下内容:

在所有对象中实现某种更改通知系统的最佳方式是什么?例如自动保存,任何更改都会触发系统序列化Main类。

我是否应该在Main课堂上使用胶水代码来观察BarItems变化,连接到他们的PropertyChanged?这似乎有点混乱,而且对我来说容易出错。有没有更好的办法?

0 投票
7 回答
3848 浏览

c# - 在 C# 中是否有一种很好的强类型方法来执行 PropertyChanged 事件?

除了 INotifyPropertyChanged 的​​ PropertyChanged 事件的属性名称之外,更改属性名称并期望 Visual Studio 中的重命名功能负责所有必要的重命名,这一定是一个比较常见的事件。有没有更好的方法让它强类型化,这样你就不需要记住手动重命名它?

0 投票
2 回答
1430 浏览

wpf - 在 F# 中使用 WPF 的 INotifyPropertyChanged 和 INotifyCollectionChanged

我有一组在后台线程中不断刷新的示例信息。

目前,我经常使用 DispatcherTimer 将此数组分配给数据网格的 ItemsSource 属性。这可行,但它会重置任何视觉位置,例如,如果用户将光标放在数据网格的中间,则执行计时器将撤消该位置。

是否可以为此使用 INotifyPropertyChanged 或 INotifyCollectionChanged 事件来防止发生此类情况?如果是这样,这如何与 F# 一起使用?

我想每次更新数组时我都必须执行一些通知数据网格的函数。数组的更新不在 STAThread 部分。

我正在使用包含 WPF 数据网格的最新 WPF 工具包运行 VS2010。

0 投票
1 回答
1815 浏览

datagridview - BindingList 在哪里/何时/如何将 PropertyChanged 转换为 ListChanged 事件

我有一个全部实现 INotifyPropertyChanged 的​​对象层次结构。我还有一个从 BindingList 派生的自定义列表。

我的理解是,当我向列表中添加一个将 INotifyPropertyChanged 引入元素的对象时,PropertyChanged 事件会以某种方式自动连接/转换为 ListChanged 事件。

但是,在我将列表设置为 DataGridView 的数据源后,当我更改网格中的值时,ListChanged 事件不会触发......当我进入代码时,事实证明 PropertyChanged() 事件不是触发是因为它为空,我认为这意味着它没有连接/转换为 BindingList 的 ListChanged 事件,就像它应该...

例如:

这是我的自定义列表类...

有什么想法或建议吗?

谢谢!

乔什

0 投票
1 回答
423 浏览

c# - CommandBinding 干扰 INotifyPropertyChanged

使用 WPF,我正在构建一个非常简单的文档编辑器,它将提供基本的格式化功能,例如修改用户文本外观的能力,即下划线、粗体、更改字体大小等。

我已经为用户的输入实现了几个 RichTextBox,并希望显示一个按钮来说明类似于 Microsoft Word 的格式选项的切换状态。例如,如果用户按下 CTRL+B,所有输入的文本都将是粗体,而“粗体”按钮则反映这种状态(按下)。

此时,按钮的 IsChecked 属性(使用自定义按钮),被绑定到一个 Property (IsSelectedTextBold)。使用 richTextBox.SelectionChanged 检测选择更改,我调用 OnPropertyChanged("IsSelectedTextBold") (定义如下)。这按预期工作;但是,当用户突出显示一个单词并按下 CTRL+B 时,选择的字体粗细更改为粗体,但按钮不反映更改,因为没有引发 richTextBox.SelectionChanged 事件。寻找一种方法来检测用户何时按下 CTRL+B,我注册了自己的 CommandBinding:

ToggleBold_Executed() 实现切换粗体并调用 OnPropertyChanged("IsSelectedTextBold") 以通知按钮发生了更改。

出于某种原因,PropertyChanged 设置为 null,并且在从 ToggleBold_Executed() 函数引发时不会触发,但在 RichTextBox_SelectionChanged 事件调用时工作正常。

作为旁注,我还考虑将 Button 的 IsChecked 属性绑定到 RichTextBox.FontWeight(使用必要的转换器)。唯一阻止我这样做的是拥有多个 RichTextBox。不确定是否要动态绑定和取消绑定按钮到活动的 RichTextBox。

感谢您忍受冗长的帖子 - 任何帮助将不胜感激。谢谢!

0 投票
2 回答
5220 浏览

wpf - WPF ListBox 未绑定到 INotifyCollectionChanged 或 INotifyPropertyChanged 事件

我有以下测试代码:

和 XAML

外部列表框在加载时填充。当扩展器展开时,我然后设置ItemsSource内部列表框的属性(我这样做而不是使用绑定的原因是这个操作很慢,我只希望它在用户选择查看项目时发生)。内部列表框呈现良好,但它实际上并没有订阅CollectionChanged集合上的事件。我已经尝试过使用ICollection而不是IEnumerable添加和INotifyPropertyChanged替换。我实际上可以让它工作的唯一方法是破坏我的类并继承自. 我试图扮演自己的角色而不是使用的理由INotifyCollectionChangedINotifyPropertyChangedSomeCollectionObservableCollection<SomeItem>INotifyCollectionChangedObservableCollection是因为我在真实代码中包装了一个 COM 集合。该集合将通知添加/更改/删除,我正在尝试将这些转换INotify为 WPF 的事件。

希望这足够清楚(为时已晚)。

0 投票
4 回答
1813 浏览

c# - 试图理解 INotifyPropertyChanged

几个(新手)问题:

1)我看到很多

我假设这不会触发属性更改?

所以,如果我想这样做,我必须提供以下内容?

2)如果我有以下情况:

以及在 XAML 中

如何让它重新评估 CanDeletePerson 属性? 基本上,它最初是禁用的,但是当我单击网格并逐行移动时,SelectedPerson 正在更新,但 CanDeletePerson 没有获得更新的值,那么我如何让它再次实际检查该值?

3) 我明白了

...取决于是否有任何东西订阅了该事件

您如何订阅活动?

0 投票
1 回答
1273 浏览

data-binding - 使用 INotifyPropertyChanged (.Net) 的数据绑定

我正在尝试找到一种在经典 Winforms 中实现 MVP 的好方法,以及我遇到的一些解决方案(例如http://codebetter.com/blogs/jeremy.miller/archive/2007/05/25/ build-you-own-cab-part-3-the-supervising-controller-pattern.aspx)谈论在模型和视图之间使用数据绑定。我以前从未使用过数据绑定,所以我想尝试一下。

问题是,我不知道如何使用 INotifyPropertyChanged 进行简单的绑定(例如,我的模型类中的字符串到表单上的文本框),如上述文章中所建议的那样。我以为我已经解决了(这是形式,其中“模型”是我的模型类的一个实例):

但是,我很快意识到这根本没有使用 INotifyPropertyChanged - 无论我是否在模型上实现该接口,它都可以正常工作。本身不是问题,但它不能按我想要的方式工作,主要问题是它是双向绑定(我只想对象绑定表单)。

我假设要么使用 INotifyPropertyChanged 进行不同的绑定方式,要么可以将如上所述完成的绑定设置为仅在一个方向上工作 - 任何人都可以在这里提供帮助,或者指出一个体面的例子吗?

我正在使用带有经典 winform 的 .Net 3.5,而不是 WPF。

谢谢

0 投票
3 回答
5846 浏览

c# - 数据绑定到只读属性

是否可以将字段(文本框)绑定到不实现集合的属性?

例如,我有一个使用 3 个字段实现 INotifyPropertyChanged 的​​对象:

我还不能完全测试这个,因为 UI 还没有制作出来,在这个类中还有很多其他的工作要完成才能起作用,但这可能是我拥有它的方式,还是有不同的方式?

0 投票
3 回答
248 浏览

winforms - 是否有任何 .net 数据类实现 INotifyPropertyChanged?

简短的问题:MS 的任何内置数据对象是否支持 INotifyPropertyChanged?

长解释:所以我将使用数据绑定控件显示大量数据。数据会随着用户交互而频繁变化。该应用程序是一个基本的 Windows 窗体应用程序。

而不是将所有数据的事件连接到显示控件,我希望我可以使用实现 INotifyPropertyChanged 的​​数据对象,这样控件就不需要知道它们的数据如何、何时或为什么改变,只是他们需要更新自己。

健全性检查:我什至在这里吠叫正确的树吗?