首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用conductor和事件聚合器进行分层导航

使用conductor和事件聚合器进行分层导航
EN

Stack Overflow用户
提问于 2012-07-12 17:23:51
回答 1查看 395关注 0票数 4

这是我的应用程序架构。请注意,我将conductor作为另一个conductor的子集。我为每个conductor提供了接收消息的IHandle,它的child.The消息类型与我使用message只是为了导航是相同的。我的问题是,我把ShellView的EventAggregator传递给了它的子节点。

新连接视图的EventAggregator怎么样?因为我在ShellView上使用它的EventAggregator进行导航。它的孩子们在它的ActiveItem上导航。

如何在一个ViewModel中分离这两个EventAggregators。

ShellView和NewConnectionView ==> Conductor.Collection.OneActive

代码语言:javascript
复制
                                         +----------------------------------+
                                         | ShellView                 |_|[]|x|
                                         +----------------------------------+
                                         | +------------------------------+ |
                                         | |                              | |
                                         | |                              | |
                                         | |                              | |
                                         | |         ActiveItem           | |
                                         | |                              | |
                                         | |                              | |
                                         | |                              | |
                                         | +------------------------------+ |
                                         +----------------------------------+
                                                     /       \
                                                    /         \
                                                   /           \
                                                  /             \
                                                 /               \
                                                /                 \
                                               /                   \
                     +----------------------------------+    +----------------------------------+
                     | NewConnectionView         |_|[]|x|    | ConnectionListView        |_|[]|x|
                     +----------------------------------+    +----------------------------------+
                     | +------------------------------+ |    | TextBlock                        |
                     | | ComboBox                 | V | |    | +----------------------+ +-----+ |
                     | +------------------------------+ |    | |                      | | Btn | |
                     | +------------------------------+ |    | |                      | +-----+ |
                     | |                              | |    | |                      | +-----+ |
                     | |                              | |    | |                      | | Btn | |
                     | |                              | |    | |    DataGrid          | +-----+ |
                     | |         ActiveItem           | |    | |                      | +-----+ |
                     | |                              | |    | |                      | | Btn | |
                     | |                              | |    | |                      | +-----+ |
                     | |                              | |    | |                      |         |
                     | +------------------------------+ |    | +----------------------+         |
                     +----------------------------------+    +----------------------------------+
                                 /       \
                                /         \
                               /           \
                              /             \
                             /               \
                            /                 \
                           /                   \
 +----------------------------------+    +----------------------------------+
 | FileConnectionView        |_|[]|x|    | DatabaseConnectionView    |_|[]|x|
 +----------------------------------+    +----------------------------------+
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 +----------------------------------+    +----------------------------------+

目前,我的方法是使用NewConnectionShellView (Screen)作为NewConnectionView的父级(Conductor)来分离EventAggregator。但问题是,我无法在我的主窗口(ShellView)中显示NewConnectionView的子项的DisplayName。

请注意,我没有使用MEF。我的问题有什么解决方法吗?

代码语言:javascript
复制
                                         +----------------------------------+
                                         | ShellView                 |_|[]|x|
                                         +----------------------------------+
                                         | +------------------------------+ |
                                         | |                              | |
                                         | |                              | |
                                         | |                              | |
                                         | |         ActiveItem           | |
                                         | |                              | |
                                         | |                              | |
                                         | |                              | |
                                         | +------------------------------+ |
                                         +----------------------------------+
                                                     /       \
                                                    /         \
                                                   /           \
                                                  /             \
                                                 /               \
                                                /                 \
                                               /                   \
                     +----------------------------------+       +----------------------------------+ 
                     | NewConnectionShellView    |_|[]|x|       | ConnectionListView        |_|[]|x| 
                     +----------------------------------+       +----------------------------------+ 
                     | +------------------------------+ |       | TextBlock                        | 
                     | |                              | |       | +----------------------+ +-----+ | 
                     | |                              | |       | |                      | | Btn | | 
                     | |                              | |       | |                      | +-----+ |
                     | |                              | |       | |                      | +-----+ | 
                     | |                              | |       | |                      | | Btn | | 
                     | |                              | |       | |    DataGrid          | +-----+ | 
                     | |         ActiveItem           | |       | |                      | +-----+ | 
                     | |                              | |       | |                      | | Btn | | 
                     | |                              | |       | |                      | +-----+ | 
                     | |                              | |       | |                      |         | 
                     | +------------------------------+ |       | +----------------------+         | 
                     +----------------------------------+       +----------------------------------+ 
                                    |
                                    |
                                    |
                                    |
                                    |
                                    |
                                    |
                                    |
                                    V
                     +----------------------------------+
                     | NewConnectionView         |_|[]|x|
                     +----------------------------------+
                     | +------------------------------+ |
                     | | ComboBox                 | V | |
                     | +------------------------------+ |
                     | +------------------------------+ |
                     | |                              | |
                     | |                              | |
                     | |                              | |
                     | |         ActiveItem           | |
                     | |                              | |
                     | |                              | |
                     | |                              | |
                     | +------------------------------+ |
                     +----------------------------------+
                                 /       \
                                /         \
                               /           \
                              /             \
                             /               \
                            /                 \
                           /                   \
 +----------------------------------+    +----------------------------------+
 | FileConnectionView        |_|[]|x|    | DatabaseConnectionView    |_|[]|x|
 +----------------------------------+    +----------------------------------+
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 |                                  |    |                                  |
 +----------------------------------+    +----------------------------------+
EN

回答 1

Stack Overflow用户

发布于 2012-07-15 18:31:50

听起来您想要使用事件聚合器的一个实例来进行shell/plugin通信,每个插件使用一个实例来进行视图间模型通信。我建议同时使用IoC容器和将shell事件聚合器注册为单例,然后使用引用容器的工厂来解析视图模型的实例。

可以有一个消息类型更改显示名称并在shell视图事件聚合器实例上发布,另一个消息类型更改当前活动项并在所有事件聚合器实例上使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11448740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档