Anders is correct, there are a number of default conventions for Caliburn.Micro
, one of them will locate and display <RootNS>.Views.[<ChildNS>].<ViewTypeName>
for <RootNS>.ViewModels.[<ChildNS>].<ViewModelTypeName>
.
In your case, for a single View
(assuming the classes reside in namespaces derived from the folders):
<RootNS>.Views.PeopleView
would by located and displayed for <RootNS>.ViewModels.PeopleViewModel
.
For multiple views over the same viewmodel, the convention is that views of format <EntityName>.<Context>
are displayed for viewmodels of format <EntityName>[<ViewSuffix>]ViewModel
:
From your example, you could create a new folder named People
, and inside it, create your views named Grid
and List
.
Your namespaces become <RootNS>.Views.People.Grid
and <RootNS>.Views.People.List
and, should then be located and displayed for <RootNS>.ViewModels.PeopleViewModel
.
You typically then display the Views
in something like a ContentControl
, choosing the View
you want to display by setting the cal:View.Context
property. You'll either hard code the name, if the context isn't going to change in that particular control, or bind to a property which describes what state the ViewModel
should be displayed as.
e.g.
<ContentControl cal:View.Model="{Binding Path=ActiveItem}"
cal:View.Context="List" />
See the Multiple Views over the Same ViewModel section.