0

我一直在学习 Composite Applicaation Library,遇到了一个问题:是否可以使用 CAL 构建多页面应用程序?

我见过的所有示例都使用定义了区域的单个页面。

可以使用多个 shell 之类的东西吗?- 如果是这样,是否违反 CAL 方法?

此外,是否可以使用 CAL 构建多页应用程序,还是仅使用单页应用程序?

此外,它还可以使用多个 shell 或多个 Bootstrappers 来显示正确的执行方式,我们对此表示赞赏。

谢谢

4

1 回答 1

0

Prism 可用于多页应用。

Prism 开发人员指南描述了一种方法。还提供了快速入门以帮助开发人员。

但是,我发现这种方式实施起来很繁重。当遇到 Prism 的多页问题时,我通常更喜欢更简单的解决方案:

  • 首先,在 Shell 中,我在单个 Grid 内的 ContentControls 中定义区域,以便这些 ContentControls 将“在同一页面上”。网格定义了页面的边界,如果你愿意,你可以把它扩展到整个窗口。
  • 然后,我有一个 NavigationManager 实例,它将负责在正确的时间加载 Shell 的每个 ContentControl/Region 的 DataContext。每次,一个 ContentControl 都填充了一个 DataContext,而其他的都是空的。
  • 最后,我在每个区域的模块初始化时注入将填充它的视图,这要归功于RegisterViewWithRegion。要做的一件重要的事情是这个。

    <UserControl>
        <UserControl.Resources>
            <DataTemplate DataType="{x:Type my:ViewModel}">
                ...
            </DataTemplate>
        </UserControl.Resources>
        <ContentControl Content="{Binding }" />
    </UserControl>
    

像这样,如果 DataContext 为空,您的视图将不会出现,因此导航。为了调用导航方法,您可以使用开发人员指南中描述的全局可用命令。这允许您将导航按钮命令直接绑定到来自任何模块的导航命令。

于 2013-07-12T10:04:21.047 回答