Estoy empezando con el patrón MVVM en WPF y decidí que la forma más elegante de estructurar mi código era inyectar el modelo de vista en el constructor de la vista.MVVM: ¿Realmente la vista necesita tener un constructor predeterminado?
Esto está muy bien, pero ReSharper da una advertencia en el XAML de que mi vista no tiene un constructor predeterminado. Supongo que esto es así para poder construir mi vista en XAML si es necesario, pero eso es solo una suposición.
¿A qué estoy renunciando al requerir que mi vista tome un modelo de vista en el constructor?
Editar: Mi opinión constructor se ve así:
public ExampleView(ExampleViewModel viewModel)
{
if (viewModel == null) throw new ArgumentNullException("viewModel");
DataContext = viewModel;
}
Respuesta: que se establecieron en la siguiente conexión, donde el espacio de nombres designtime contiene burlado hasta versiones del modelo de vista para el ensayo y tiempo de diseño apoyo.
ExampleView.xaml.cs
public ExampleView()
{
InitializeComponent();
}
public ExampleView(IExampleViewModel viewModel)
: this()
{
DataContext = viewModel;
}
ExampleView.xaml
<UserControl
x:Class="Wpf.Examples.ExampleView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:DesignTime="clr-namespace:Wpf.Examples.DesignTime">
<UserControl.DataContext>
<DesignTime:ExampleViewModel/>
</UserControl.DataContext>
</UserControl>
Estoy configurando el DataContext en el constructor de todos modos, ¿hay un mejor patrón para esto? –
Use una fábrica? Establecer el DataContext manualmente? ¿Crear un constructor predeterminado vacío? –