我在单独的项目中有我的视图和视图模型,我使用ViewLocator.AddNamespaceMapping()调用来映射所有内容。
如何继续保持独立并使用建议的{。{3}} View.Context切换?
假设我的viewmodel项目包含顶级功能文件夹:
MyViewModels /
--- / FormDesigner / FormDesignerViewModel.cs
--- / GroupDesigner / GroupDesignerViewModel.cs
--- / FilterDesigner / FilterDesignerViewModel.cs
等
我的观点项目如下:
MyViews /
--- / FormDesigner / FormDesignerView.xaml
--- / GroupDesigner / GroupDesignerView.xaml
--- / FilterDesigner / FilterDesignerView.xaml
我目前在我的Bootstrapper中映射如下:
ViewLocator.AddNamespaceMapping(“MyViewModels”,“MyViews”);
我如何为每个当前的Xaml视图引入View.Context切换备用视图?感谢
答案 0 :(得分:0)
我认为内置的约定会为您处理(您还可以指定其他约定),前提是您的视图已正确命名/命名(See "Multiple Views over the Same ViewModel")。
通常,您可以在以下结构中放置视图(如果要切换):
Folder: Views/FormDesigner/ // Folder Structure not critical
NameSpace: YourApp.Views.FormDesigner
XAML: YourApp.Views.FormDesigner.Master.Xaml
XAML: YourApp.Views.FormDesigner.Detail.Xaml
Binding: <ContentControl cal:View.Model="{Binding Path=ActiveItem}"
cal:View.Context="Master" />
您的绑定可能会有所不同,对于切换,您需要将Context
绑定到ViewModel上的属性(在您的情况下指示Master
或Detail
。
您可以使用现有视图,但如果要切换上下文,则必须更改FormDesignerView.xaml
的名称。
我很难解释在这个答案中管理这种行为的内置Caliburn.Micro
惯例:One ViewModel, multiple views