【发布时间】:2014-05-13 12:16:38
【问题描述】:
我正在使用 MVVM(利用 Prism 和 Unity),但我对如何获取给定模块的名称有些困惑。在设计时,我不知道给定用户可以访问哪些模块,因此显示需要是动态的。因此,如果我有 3 个模块,但用户只能访问模块 1 和模块 3,我的容器的结构将类似于以下内容:
########## 容器 ################================模块 1 文本=======
---------- 查看 1 条文字------
---------- 查看 2 文本------
---------- 查看 3 文本------
================模块 3 文本=======
---------- 查看 1 条文本------
---------- 查看 2 文本------
我(基本上)知道如何通过使用 ViewModel 来显示“查看 X 文本”,但我不确定如何正确设置给定模块的文本。
作为参考,我的 Bootstrapper.cs 文件如下所示:
protected override DependencyObject CreateShell()
{
// Use the container to create an instance of the shell.
var view = Container.TryResolve<AppShell>();
return view;
}
protected override void InitializeShell()
{
base.InitializeShell();
Application.Current.MainWindow = (Window)Shell;
Application.Current.MainWindow.Show();
}
protected override IModuleCatalog CreateModuleCatalog()
{
var catalog = new ModuleCatalog();
catalog.AddModule(typeof(Module1));
//catalog.AddModule(typeof(Module2));
catalog.AddModule(typeof(Module3));
return catalog;
}
如果您能提供任何帮助,我们将不胜感激!
谢谢。
【问题讨论】:
-
模块上引用的文本到底是什么?您描述的结构显示它们将如何显示在应用程序中或仅显示容器层次结构注册?我不完全理解您为什么或如何在容器注册上添加文本。但是,如果您想显示带有一些文本的模块部分,您可以创建一个配置了文本的 ModuleView 和一个您将注册相关视图的 ItemsControl 区域。问候。
-
文本将是模块的名称。想一想 Outlook;它有 4 个默认“模块”:邮件、日历、联系人和任务。因此,如果 Module1 在我的代码上面的邮件模块中,那么我希望“邮件”会显示在我的 UI 中,依此类推。