Vista diferente según ContentControl(Caliburn.Micro)
(1)
Estoy enlazando ViewModels a ContentControls y dejando que Caliburn se encargue de crear y enlazar la vista. Sin embargo, me gustaría personalizar Caliburns ViewModel-> Ver la convención en función de qué ContentControl estoy enlazando
Por ejemplo, un ContentControl normal, quiero que la vista normal se enlace (SomethingViewModel -> SomethingView). Pero para cierto ContentControl, quiero que Caliburn obtenga una vista llamada, por ejemplo, SomethingViewSpecial. ¿Es eso posible?
Sí, es posible.
Use la propiedad adjunta cal:View.Context
y luego nombre su vista para el contexto especificado como YourNamespace.Something.ContextView
(quite "ViewModel" de su nombre de modelo de vista, agregue un punto y el valor de la propiedad Context).
De ese modo, incluso puede vincular varias vistas a un modelo de vista.
Ejemplo:
<ContentControl x:Name="Toolbar" cal:View.Model="{Binding ActiveItem}" cal:View.Context="Toolbar" />
Puede ver un ejemplo de trabajo here (de la aplicación de ejemplo CoProject , parte 9 ).