Я только начинаю работу с шаблоном MVVM в WPF, и я решил, что самый элегантный способ структурировать мой код - внедрить модель представления в конструктор представления.
Это все хорошо, но ReSharper выдает предупреждение в XAML, что у моего представления нет конструктора по умолчанию. Я предполагаю, что это так, чтобы я мог построить свое представление в XAML при необходимости, но это только предположение.
От чего я отказываюсь, требуя, чтобы мой вид взял модель представления в конструкторе?
Редактировать: Мой конструктор представлений выглядит так:
public ExampleView(ExampleViewModel viewModel)
{
if (viewModel == null) throw new ArgumentNullException("viewModel");
DataContext = viewModel;
}
Ответ: Я остановился на следующей настройке, где пространство имен DesignTime содержит макеты версий ViewModel для тестирования и поддержки времени разработки.
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>