【发布时间】:2012-07-12 11:45:06
【问题描述】:
我有三门课, 第一:
public class Setting
具有属性:
string ID, string Value; (implements INotifyPropertyChanged on Value)
第二:
public class SettingCollection
这是一个:
ObservableCollection<Setting>
第三:
public class SimObject
具有属性:
string ID, SettingsCollection Settings;
我有一个观点: 设置显示.xaml 具有依赖属性:
SettingsCollection SimObjSettings;
并在 ItemsContainer 内的 TextBox 中显示设置的 ID 及其值。
我的 MainWindow ViewModel 有一个 SimObject Jeff;在视图中我有
<local:SettingsDisplay SimObjSettings="{Binding Jeff.Settings}"/>
这一切都很好。
我需要知道 Setting Value 何时发生变化,以及何时发生这种情况我需要知道 Setting 所属的 SimObject ID,以便我可以调用一个方法来发送带有 Setting @ 的事件987654336@、Value 和 SimObject ID。 (例如SendEvent(settingID, settingValue, targetObject))
显然Setting 和SettingCollection 不知道SimObject 属于什么。
我尝试这样做的方法是在 Value 属性的 Setter 中的 Setting 类调用 SendEvent 中。
我正在努力寻找一种合适的方式将SimObject 的ID 向下传递到Setting 的班级,我也不认为这是一个好的解决方案。
实现我想要做的最好的方法是什么?
【问题讨论】:
-
“我需要将实时值更改发送到另一个系统” - 你的意思是另一个应用程序?你能指定这个吗?
-
听起来您正在寻找某种事件消息传递系统。我建议您查看 Prism 的 EventAggregator 或 MVVM Light 的 Messenger。然后,您可以在值更改时广播更改,任何关心监听这些更改的人都可以订阅接收这些事件消息。如果你有兴趣,我在我的博客上有一个关于event systems in MVVM 的简短摘要。
-
@blindmeis 很抱歉澄清一下,我有一个非托管 DLL,我通过 CLR 接口与之通信。
-
@Rachel 我不确定这些事件消息系统对我的情况有何帮助,我会订阅什么?
-
@user13070 您更改的对象会发布一条事件消息,说明它们已更改。任何需要通知的东西都会订阅接收这种消息。我链接的两个库都有一个处理事件消息的对象(
EventAggregator或Messenger),您可以使用该对象发布或订阅消息