C# 如何使用Caliburn Micro设计ShellView?
假设我想创建一个类似于Windows资源管理器的应用程序。我需要一些像这样的模块(组件)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中设计所有内容,而只是硬引用我
- 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
。动态加载模块有多种方法。