во время разработки Visual Studio попытается создать новый Instant YourUserControl
с конструктором без параметров .
если вы не можете создать мгновенный пользовательский контроль, как это
var myView = new MyUserControl(); //no params
дизайнер не сможет отобразить.
если YourUserControl требуется какой-либо параметр. самый популярный трюк - создать такой конструктор, как этот
public MyUserControl() :
this(new MockViewModel(), new MockDataContext){ } // mock Designtime constructor
puclic MyUserControl(IViewModel vm, IDataContext context) //runtime constructor
{
}
в шаблоне MVVM некоторый UserControl.DataContext является определяемым пользователем типом, для которого требуется несколько параметров
XAML
<UserControl.DataContext>
<local:MyViewModel />
</UserControl.DataContext>
Вы должны определить конструктор без параметров для среды разработки.
public MyViewModel() : this(new MockEventAggregator()) //for designtime
{ }
[ImportingConstructor]
public MyViewModel(IEventAggregator eventAggregator) //for runtime
{
this._eventAggregator = eventAggregator;
//...
}