- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个 senerio 有效吗?
我有一个 View 来维护一个项目。
我有 View 模型,它将项目对象(实现 INotifyPropertyChanged)公开为 View 绑定(bind)到的属性。
我是否可以将 Item 对象传递给对其进行修改的 Backgroundworker,然后在 BackgroundWorking 完成时引发 PropertyChanged 事件?
或者 BackgroundWorker 不应该修改 Item 对象。我将使用 BackgroundWorker 传回的结果更新现有的 Item 对象。这将在 RunWorkerCompleted 事件中完成。但这是否会锁定 UI 线程并破坏拥有后台工作人员的对象?
使困惑?
我会尽力解释。
用户可以选择创建一个项目。我创建 View 和 View 模型。在 View 模型中创建了一个空的 Item 对象。为他提供了一个 View 来维护该项目。在选择项目类型属性时,这会引发一个复杂的过程来创建要由用户输入的属性列表。我可以在创建列表时阻止 UI 线程,但这会带来糟糕的用户体验。我想将处理传递给后台线程,同时保持 UI 处于事件状态。目前,我设置了一个标志来指示 View 上的部分正在加载,将 Item 对象传递给 BackgroundWorker,后者会更新可观察的 Properties 集合。当 BackgroundWorking 完成时,我调用 PropertyChanged 事件,该事件更新绑定(bind)到列表的 View 部分并关闭标志以指示该部分正在加载。这似乎没有问题。但我有一种直觉,我不应该在后台线程中更新来自 View 模型的绑定(bind)对象。
谢谢蒂姆
最佳答案
这听起来不错。只要您的项目对象是 没有 DependencyObject
,您可以在后台工作人员中更改它们的属性。
对对象属性的数据绑定(bind)将起作用,绑定(bind)引擎将为您自动进行线程切换。
但是,不要在没有调度操作的情况下填充数据绑定(bind)集合或在后台工作人员中操作 DependencyObjects(例如 UI-Controls)的属性。这将导致异常。
编辑:
仅用于澄清:真正的问题不是,如果 item-object 是 DependencyObject
但如果属性是 CLR-property
或 DependencyProperty
.因为 DependencyProperties 绑定(bind)到 DependencyObjects,所以我经常使用上面的简化,但这并不是全部事实。
这意味着如果你有一个 CLR 属性,你可以从一个外部线程设置它的值,不管你的类是 DepenendencyObject
。或不。这与我的第一个陈述略有不同。
关于WPF MVVM 在后台工作人员上更新 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5196257/
是否有用于手动测试的代码覆盖工具?比如我新写了30行代码,编译,然后运行,有什么办法可以快速验证这30行都运行了吗? 另外,后来,在我将代码 checkin 正式版本后,有什么方法可以验证测试部门在进
老实说,这是一个家庭作业问题,但我已经浪费了好几个小时,而且无法正确解决。它返回错误数量的结果或错误的数据: 我需要选择参与指导电影和/或在电影中表演的每个人以及他们所做的次数,如果至少 5 次。 有
我正在尝试测试 MacOS 的应用内购买。输入测试用户凭据后,App Store 提示:“当前收据无效或 ds 人员 ID 不匹配。”并且购买失败。 最佳答案 我尝试了很多方法来解决这个问题。 Get
我正在为 Jenkins 使用 ActiveDirectory 插件,因此用户必须使用他们的凭据登录到 Jenkins。然后用户在 Jenkins 中被称为 joe.doe,这很完美。 当同一个人 c
如何从 Infopath 人员/组选取器检索电子邮件地址?当我将人员/组选取器添加到 infopath 表单时,我只得到 3 个字段 DisplayName、AccountId、AccountType
在 Snow Leopard 中,可以在 iCal 事件中显示空闲/忙碌时间。我搜索了 CalStore.framework 的 header ,但找不到任何描述该字段的属性。如何检索日历事件的忙/闲
是否有人成功地从专门针对 SharePoint 2013 的新建或编辑表单中获取用户(个人或组)字段的值? 我已经尝试了通过搜索互联网找到的所有解决方案以及我自己能想到的所有解决方案,所有结果都为空白
所以我需要将一个 Twitter 帐户添加到 ABRecordRef 中。然而,最快的方法似乎是获取社交资料属性的多值引用,创建它的可变版本,查找它是否有 Twitter 条目,如果已经有,则创建
我正在尝试将使用 Tomcat(最初是 5.5,但可以与 7 一起使用)在 MyEclipse 中开发的应用程序部署到我们的演示服务器 (Sun Java Web Server 7)。不幸的是,所有设
我是一名优秀的程序员,十分优秀!