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

c# - 设置属性时 PropertyChangedEventHandler 为空

现在的问题是,当我移动滑块时数据绑定工作正常(当我移动滑块时模型会更新)。

但是,当单击按钮时,我会更改模型中的值并期望它更新视图。

下面的代码:

模型中的代码:

但在 OnPropertyChanged 中,该事件为空,因此没有任何反应。为什么事件为空而不是当我的滑块移动时以及如何解决它?

0 投票
1 回答
1188 浏览

silverlight - Silverlight、Unity 和 INotifyPropertyChanged

我现在正在启动一个新的 Silverlight 项目,如果我的 ViewModel(它正在为我实例化)包含 RaisePropertyChanged 事件,我会遇到 Unity 引发异常的问题。

我看起来像这样:

它继承的 ViewModelBase 如下所示:

完整的堆栈跟踪如下所示,但似乎在构造函数期间调用 RaisePropertyChanged 事件会导致 Unity 崩溃。

这是错误的完整堆栈跟踪:

所以我遇到了 NullReferenceException。我无法弄清楚如何...

0 投票
2 回答
1942 浏览

data-binding - F#:使用 INotifyPropertyChanged 进行数据绑定

如何实现 INotifyPropertyChanged 以在 F# 类型中使用?谢谢!

0 投票
2 回答
184 浏览

.net - 为什么 .NET 在接收到 INotifyPropertyChanged.PropertyChanged 事件时会读取未受影响的属性值?

我是数据绑定的新手,今天遇到了以下我无法理解的奇怪现象:

我有一个带有两个标签(labelA 和 labelB)和两个按钮(buttonA 和 buttonB)的表单。

表单承载一个具有两个属性(CountA 和 CountB)的对象(称为“formState”)。labelA.Text 数据绑定到 formState.CountA,labelB.Text 数据绑定到 formState.CountB。

当 buttonA 被按下时,它使 formState 以“CountA”作为属性名称引发 PropertyChange 事件。当 buttonB 被按下时,它会引发 formState.PropertyChange,并将“CountB”作为属性名称。

我希望按下 buttonA 时只有 labelA 得到更新,按下 buttonB 时只有 labelB 得到更新。但是,当我按下任何按钮时,两个标签都会更新。我可以看到这一点,因为每次读取它们的值时 CountA 和 CountB 属性都会递增并返回一个计数器。代码如下。

有人对这种行为有解释吗?

0 投票
1 回答
913 浏览

winforms - 使用 INotifyPropertyChanged 将 Winform 控件属性绑定到用户控件上的属性

请给我提意见。Winforms 应用程序,C#。我有一个包含 DataGridView 的用户控件 (UC)。

首先,我在 UC 中有一个名为“IsComplete”的布尔公共属性。在我的 DGV 的 RowEnter 事件中,我能够相应地设置属性。

其次,我成功地实例化了这个 UC 并将其加载到我的主窗体中的指定区域。

问题: 我希望主窗体中控件的“已启用”属性在更改时自动响应 UC 中的 IsComplete 属性。

这可能吗?我在 Google 上的所有搜索都引用了使用 INotifyPropertyChanged 的​​示例,但仅限于同一类。

我当然会很感激这方面的任何帮助。蒂亚!

-干杯!

0 投票
1 回答
14483 浏览

winforms - 可观察集合在 Winforms 和可能的替代方案中

Winforms .net 3.5 应用程序。在我的应用程序中,我有一个看起来像这样的通用类:

当我想实现某种过滤器功能时,我会在所有对话框中使用它。List<FilterItem>所以我用构造函数中传递的预填充来调用对话框表单。现在,当对话框加载时,它会遍历每个列表项并添加:

  1. 一个复选框
  2. 组合框
  3. 一个文本框

到 TableLayoutPanel 中的每一行。Checkbox 从...获取其文本属性FilterProperty及其 Checked 状态FilterPropertyChecked...Combobox 从...获取其绑定,FilterOperator而 Textbox 从...获取其文本值FilterValue

注意我只说得到。我想做的是在它们的属性必须更改的控件时自动更新这些属性。我听说过,ObservableCollection<T>但在添加命名空间后,我似乎无法在 Winforms 中“访问”它System.Collections.ObjectModel

实现这一目标的最佳方法是什么。BindingList 与 INotifyPropertyChanged?? 我不是后者的专家,并且非常感谢一些指示 - 如果这是我应该走的路。

感谢你!

编辑:

好的,让我发布一些代码来展示我认为我应该做什么:)。我知道我需要INotifyPropertyChanged在我的 FilterItem 类上实现,所以(例如,仅用于 FilterValue 部分):

现在它应该全部放在我的 Form_Load 中(这仅适用于文本框部分,我省略了 Checbox 和 ComboBox),如下所示:

文本框的数据绑定 DataSource 是 FilterItem 的“项目”。但是现在我的 Visual Studio IDE 似乎有问题,所以不能尝试这个,但是当我启动并运行它时会。我现在想知道的是:此设置是否会成功地帮助我的个人FilterItem在他们分配的 Control 各自的属性发生变化时自动更新?

0 投票
2 回答
909 浏览

wpf - 无法更新 DataGrid

我有一个 WPF 工具包DataGrid绑定到我ObservableCollectionCar视图模型中的一个。 Car有一个PropertyChanged事件,并且它的两个字符串属性中的每一个的设置器都会触发该事件。我还将网格的SelectedItem属性绑定到类型视图模型中的属性Car,也称为SelectedItem.

在与网格相同的窗口上,我有addmodify的按钮deleteAddmodify打开一个带有两个文本框的对话框窗口,每个Car属性一个。 Delete只显示一个确认对话框,然后进行删除。

对于adddelete,我从 中添加或删除一个项目,ObservableCollection并且网格会按预期自行更新。但是,因为modify它没有。起初,我Car没有使用PropertyChanged,经过一番搜索,我发现当单个项目的属性发生变化时,网格需要更新。但是现在我正在使用PropertyChanged,网格仍然没有更新。

我尝试更改SelectedItem视图模型中的值以及直接更改集合上的项目。

我究竟做错了什么?

0 投票
2 回答
29711 浏览

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

我有这样的课:

我的文本框绑定到 ViewModel 的名称和年龄。如果我更改 ViewModel 中的 _person 对象,我是否必须再次为每个属性调用 RaisePropertyChanged 或者是否有办法自动执行此操作(在我的具体示例中,我有大约 15 个属性..)?

谢谢你的帮助。

干杯约瑟夫

0 投票
2 回答
2279 浏览

wpf - WPF CheckBox Binding - Altering value in Property Set does not affect UI

i have a simple checkbox

In Code i have a class with "INotifyPropertyChanged" and the Property

If SomeTest() returns !value so the underlying data does not have to change the CheckBox still changes its IsChecked state.

For example:
ForceInheritance is false.
CheckBox is clicked.
SomeTest() returns false.
--> The underlying data is not changed
--> I would expect the CheckBox to stay unchecked
The CheckBox gets checked.

What can i do to not change the IsChecked state of the CheckBox when the setter does not actually change the value?

I thought the "OnPropertyChanged("ForceInheritance");" would do the trick but it didn't.

Thank you for your time.

0 投票
4 回答
4847 浏览

.net - 在 WPF 和 Silverlight 中的静态属性上实现 INotifyProperty 更改

问题是如何INotifyPropertyChanged在静态属性上实现,因为您实现的事件不是静态的,并且不能由静态属性调用。此外,您不能绑定到 Silverlight 中的静态属性。

我已经看到这个问题出现在几个论坛中,提供了各种解决方案,但没有一个非常令人满意。

好吧,我想我找到了一个优雅的解决方案,但它太简单了,我觉得我一定错过了一些东西。

答案是,编写一个访问静态变量的非静态属性,如下所示:

我已经对其进行了测试,它似乎工作得很好。我错过了什么吗?