Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Caliburn Micro设计ShellView?_C#_Wpf_Mvvm_Caliburn.micro - Fatal编程技术网

C# 如何使用Caliburn Micro设计ShellView?

C# 如何使用Caliburn Micro设计ShellView?,c#,wpf,mvvm,caliburn.micro,C#,Wpf,Mvvm,Caliburn.micro,假设我想创建一个类似于Windows资源管理器的应用程序。我需要一些像这样的模块(组件) - MyApp.Modules.NavPane - MyApp.Modules.Ribbon - MyApp.Modules.StatusBar - MyApp.Modules.Body 然后我有另外两个模块作为我的入口点和一个shell - MyApp.Core - MyApp.Shell 因此,现在我的问题是:我的应用程序布局的正确方式是什么?我是否在ShellView中设计所有内容,而只是硬引用我

假设我想创建一个类似于Windows资源管理器的应用程序。我需要一些像这样的模块(组件)

- MyApp.Modules.NavPane
- MyApp.Modules.Ribbon
- MyApp.Modules.StatusBar
- MyApp.Modules.Body
然后我有另外两个模块作为我的入口点和一个shell

- MyApp.Core
- MyApp.Shell
因此,现在我的问题是:我的应用程序布局的正确方式是什么?我是否在ShellView中设计所有内容,而只是硬引用我的模块

通过硬引用,我的意思是我设置了对模块程序集的实际引用,构造函数注入了我需要的视图模型(
NavPaneViewModel
RibbonViewModel
,…),并使用
ContentControl
将它们放在我的ShellView中

这里有一些伪ish代码

public class ShellViewModel 
{
    public Screen NavPane { get; }

    public ShellViewModel(NavPaneViewModel navPane, ...) 
    {
        NavPane = navPane;
        // ...
    }
}
我的看法呢

<UserControl x:Class="MyApp.ShellView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
            <Grid.RowDefinitions><!--...--></Grid.RowDefinitions>
            <Grid.ColumnDefinitions><!--...--></Grid.ColumnDefinitions>

        <ContentControl x:Name="NavPane" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" />
    </Grid>
</UserControl>


基本上我就是这样做的,我的应用程序运行良好。看起来不错!如果模块化是您想要的,那么您应该使用
PRISM
。动态加载模块有多种方法。