wpf - ¿Caliburn.Micro juega muy bien con los controles de usuario?
mvvm user-controls (1)
Sí, Caliburn.Micro
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 la descripción de una forma de vincular propiedades separadas a un único control de usuario, y la solución es válida. Una solución mejor 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 eso se llama vista primero, y debe decirle a Caliburn.Micro donde el modelo de vista debe enlazarse a:
<UserControl ...
cal:Bind.Model="EasyPlayer.MediaControl.NowPlayingViewModel" />
Por lo tanto, esto conceptualmente se puede considerar como un viewmodel / view en lugar de un UserControl con propiedades de dependencia, etc.
De hecho, cuando utilice Caliburn.Micro, encontrará que utilizará cada vez menos UserControl
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 ContentControl
en una vista con el mismo nombre que una propiedad de modelo de vista en su modelo de vista principal, Caliburn.Micro ubicará la vista del modelo de vista correspondiente, lo inyectará en ContentControl
y enlazará la vista / vista modelo.
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>
Soy un programador de WPF novato. Estoy tratando de agregar algo de estructura a mi código: tanto User Controls como MVVM.
Investigando aquí, he encontrado que la gente recomienda Caliburn.Micro . Por otro lado, he encontrado algunas quejas aquí y en otras partes sobre Caliburn. Micro no está jugando muy bien con UserControls.
Entonces mi pregunta es: ¿Caliburn.Micro juega muy bien con los controles de usuario?