Sí, Caliburn.Micro
se juega muy bien con los controles de usuario. Es un marco obstinado, pero no al punto de forzarte por un camino de desarrollo particular. Como sugieren las respuestas a las preguntas vinculadas, siempre puede usar un enlace antiguo WPF simple si tiene algún problema en particular.
De hecho, no permitiría que esos dos enlaces lo detuvieran para nada, el primero es describir una forma de enlazar propiedades separadas a un único control de usuario, y la solución es válida. Una mejor solución sería probablemente usar un ItemsControl
con un DataTemplate
personalizado, y luego crear una colección de DTO en su modelo de vista que contenga los nombres y valores de las propiedades.
El segundo enlace indica cómo si crea una vista (UserControl
) y crea una instancia de la vista en XAML, y desea vincularla a un modelo de vista, entonces se llama vista primero, y tiene que Caliburn.Micro decir que el modelo de vista es que se unen a:
<UserControl ...
cal:Bind.Model="EasyPlayer.MediaControl.NowPlayingViewModel" />
lo tanto, esto conceptualmente se puede considerar como un modelo de vista/vista en lugar de un control de usuario con las propiedades de dependencia, etc.
de hecho, Descubrirá que cuando utiliza Caliburn.Micro, probablemente use cada vez menos UserControl
s para realizar la composición de la vista. Esto se debe a que es muy fácil crear piezas de UI reutilizables usando modelos de vista, vistas y el primer enfoque del modelo de visualización.
Cuando tiene un ContentControl
en una vista con el mismo nombre que una propiedad de modelo de vista en su modelo de vista principal, entonces Caliburn.Micro ubicará la vista del modelo de vista correspondiente, lo inyectará en el ContentControl
y lo vinculará el modelo de vista/vista.
Por ejemplo:
public class MyParentViewModel : Screen
{
public MenuViewModel MenuViewModel { get; set; }
public DetailsViewModel DetailsViewModel { get; set; }
public MyParentViewModel()
{
this.MenuViewModel = new MenuViewModel();
this.DetailsViewModel = new DetailsViewModel();
}
}
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".2*" />
<ColumnDefinition Width=".8*" />
</Grid.ColumnDefinitions>
<ContentControl Grid.Column="0" x:Name="MenuViewModel" />
<ContentControl Grid.Column="1" x:Name="DetailsViewModel" />
</Grid>
comenzando con Caliburn y acaba de llegar a través de su post muy útil - ... podría ampliar un poco sobre el uso de controles de usuario ahora tanto ... afaics una vista va a ser una usercontrol ¿no? thxvm –
Sí, con Caliburn.Micro no utilizará los controles de usuario en el sentido de controles de usuario con propiedades de dependencia, creando instancias de los controles directamente desde otra ventana/control de usuario, etc. – devdigital
bien ... pero aún estará en la casa, diga , una grilla en un usercontrol (con todo el comportamiento personalizado en el viewmodel/xaml) y la carga dinámicamente en un ContentControl a través de Caliburn.Micro? (Solo quiero comprobar que no me estoy perdiendo nada). Mucho más de nuevo. –