caliburn.micro

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 ).