问题标签 [propertychanged]

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 回答
1042 浏览

wpf - 没有数据绑定时将属性从模型传递到视图

我知道这已经被讨论了很多,但我无法让它发挥作用。

我在 WPF 中有一个视图 - ViewModel - 模型。我需要传递模型中的属性已更改的信息。我需要最终在视图中处理信息。请注意,这里没有从 View 到 ViewModel 的数据绑定。

ViewModel我有一组模型对象:

模型是:

我想要做的是在 ViewModel 中的集合“Items”中的任何项目中更改属性“Name”时运行的 View 代码隐藏(见下文)中运行一个过程。

查看

更新 1 >>>

为了响应您的自定义类,我尝试将其转换为 VB.NET(如下),但看起来在此派生类中覆盖事件存在一些问题。不知道“受保护的阴影事件 PropertyChanged”是否是正确的方法。我得到 item.PropertyChanged 说“PropertyChanged 不是 T 事件”。
你能帮我解决这个问题吗?否则我得到了这个概念/想法。

0 投票
1 回答
285 浏览

wpf - ListView 绑定项上的 PropertyChanged 为 null(涉及 Windows 工作流和 ModelItems)

首先,我会总结一下我在做什么。然后,我将介绍我认为是这些步骤之一的相关代码位,这些步骤展示了标题问题,然后我将在最后解释问题。

我正在公开一个内部库,用于将我们的一个软件产品自动化到 Windows 工作流,允许工程师(不是软件工程师)在不实际编写代码的情况下使用我们的库,以及其他原因。我正在设计一个步骤,用户将通过该步骤选择要使用的方法,然后通过 Workflow Arguments 填充输入参数列表。执行工作流将在运行时在对象上调用此方法(是的,这有效)。

我的步骤逻辑

我的步骤视图

myNonEnumArgumentWrapperTemplate 数据模板

我的步骤视图代码

ArgumentWrapper 类

为了将这一切结合在一起,我在此步骤中截取了一个屏幕截图,并选择了一种方法:

在此处输入图像描述

这显示了将在对象上调用的方法,采用 5 个参数,其中 3 个是枚举(红色错误是因为字段为空)。

现在,绑定几乎可以工作了——视图正确初始化,允许我填充字段并执行工作流。但是如果我对ArgumentWrapper对象进行更改,视图不会更新。

问题: 如果我在代码中更改ArgumentWrapper.ArgumentType,则更改不会传播到ExpressionTextBox。我知道这一点是因为当ArgumentToExpressionConverter将输入的表达式转换为参数时,它总是在构造时返回该类型的参数,无论该类型是否已更改。我尝试实现INotifyPropertyChanged,但PropertyChanged为空,我一直无法弄清楚原因。

0 投票
1 回答
135 浏览

c# - 无需while即可连续获取方法数据

我正在尝试从 Kinects 加速度计获取数据,但它没有更改通知事件,因此为了获取数据,我现在正在使用 while 循环。有没有办法将 AccelerometerGetCurrentReading () 方法的结果绑定到一个属性,然后使用 propertychanged 事件,或者别的什么?

0 投票
2 回答
430 浏览

c# - 通过 Action 而不是挂钩 PropertyChanged?

在我目前的项目中,我遇到了以下情况:

  • VM1 用于显示在屏幕上。
  • VM1 具有 VM2 的公共属性。
  • VM1 具有 VM3 的公共属性。
  • VM3 有一个依赖于 VM2 的属性。
  • VM1 没有处理机制。

一开始我考虑挂钩到 VM2.PropertyChanged 事件来检查我想要的属性并相应地更改 VM3 受影响的属性,如:

这意味着,由于我无法在此类中取消挂钩事件,因此存在内存泄漏。

所以我最终将一个 Action 传递给 VM2 以便在其重要属性更改值时调用它,如下所示:

我这里有内存泄漏吗?

PD:如果您还可以回答以下问题,那就太好了: - 这甚至是一个好习惯吗?

谢谢

0 投票
0 回答
119 浏览

wpf - wpf 3.5 和 4 之间的绑定更改

关于以下代码。

双击时,windows 内容将被替换,这应该清除现有的控件绑定(注销 PropertyChanged,并输入删除访问器)。

在 .net 4.0 下运行,它按预期工作,但在 3.5 下运行(在这种情况下,直到您关闭窗口才会调用 Remove)

为什么会这样,我可以在 3.5 中获得相同的行为吗?

0 投票
0 回答
436 浏览

c++ - MFC - 每当更改属性时如何执行某个方法

几天前,我开始开发一个 MFC 应用程序,它作为我的数据库的客户端。最近,我试图在“属性”窗口上实现一个每次更改属性值(最好是作为组合框的字段)时执行的方法。我的第一次尝试是覆盖CMFCPropertyGridProperty::OnUpdateValue(). 我能够正确地“实现”这个方法,但它没有按预期工作(我相信这里的主要问题是我没有直接在 CProperties 类上实现它,但我在互联网)。

所以,我已经转向基于消息映射的命令。我尝试了多种命令,例如ON_CONTROL_REFLECT, CBN_EDITCHANGE, CBN_EDITUPDATE,但这些似乎都没有帮助。我不确定我是否在定义主要属性(这些 previos 命令的第一个参数)时犯了一个巨大的错误,或者它们是否是CCombobox该类的专有命令。换句话说,这些命令似乎对我当前的属性网格毫无用处,因为到目前为止我使用的唯一“组合框”是使用方法 CMFCPropertyGridProperty::AddOption() 时生成的组合框(重要说明:我的整个属性网格基本上由 CMFCPropertyGridProperty 对象组成)。

无论如何,我相信我的疑问的答案和这个问题的解决方案有点简单,但我仍然是 C++ 和 MFC 的新手......

0 投票
1 回答
54 浏览

c#-4.0 - 实现 INPC 时是否可以获取更改属性的值而不是仅获取其名称?

我正在使用INotifyPropertyChanged,以便类库中的域对象可以通知其执行方法的进度。这与 WPF 或 DataBinding 情况无关。

我已阅读有关事件的文档,并且只有一个属性:PropertyChangedPropertyChangedEventArgsPropertyName

PropertyChanged组件上的属性发生更改时会引发事件。对象指定更改的PropertyChangedEventArgs属性的名称。

PropertyChangedEventArgs提供PropertyName属性以获取更改的属性的名称。

问题是:我需要获取已更改属性的 VALUE,而不是其名称,所以我问:

有没有办法在PropertyChanged事件 args 中获取属性的值?

(因为如果不是,我想我将不得不为自己创建一个ReportProgress类似于BackgroundWorker课堂的事件,对吗?)

谢谢阅读。

0 投票
0 回答
193 浏览

wpf - 容器关闭时 XAML Datagrid 不更新绑定

我有一个 WPF 用户控件,其数据网格位于 WinForms 表单中。使用 ItemsSource 绑定将数据网格绑定到数据源。一切正常,因此当数据更改时,更改会传播到对象模型。

但是,如果用户在数据网格中编辑数据,然后单击托管容器的关闭按钮,则数据网格不会更新绑定,大概是因为它认为它没有失去焦点。表单关闭并且更改丢失。

同样的问题也适用于文本框,但我可以通过使用 UpdateSourceTrigger=PropertyChanged 来解决这个问题,这样底层模型会随着文本的变化而不断更新。不理想 - 但它避免了这个问题。

有谁知道如何将数据网格切换到 PropertyChanged 模式以更新源,或者做一些事情来强制数据网格通过绑定到底层对象来保存更改?

在研究这个时,我发现这篇文章很有帮助: http: //www.jerryhuang.net/post/Force-a-data-binding-to-update.aspx

谢谢

0 投票
3 回答
41 浏览

c# - 绑定到类项目并且没有执行任何集合

在我的 ViewModel 中,我有:

在我看来:

在文本框中输入时是否有可能触发一组项目?或者我应该为类的每个字段创建属性?

0 投票
2 回答
1079 浏览

c# - 如何从我的父类通知客户的子类属性更改?

我正在编写一个库,我的客户正在使用我的库。

我的客户创建了从我的基类派生的自己的类。

我可以检测到我的客户的类属性已更改吗?

我不希望我的客户实施 INotifyPropertyChanged。

我还将反射用于其他目的。为什么反射无法检测到属性更改状态?

我的图书馆代码:

客户代码: