during development, Visual Studio will attempt to create a new Instant of YourUserControl with a parametric constructor .
if you cannot create usercontrol instantly like this
var myView = new MyUserControl();
the constructor will not be able to render.
if the parameter "YourUserControl" requires any parameter. the most popular trick is to create a dedication constructor like this
public MyUserControl() : this(new MockViewModel(), new MockDataContext){ }
in the MVVM template, some UserControl.DataContext is defined by the user. A type that requires some XAML parameters
<UserControl.DataContext> <local:MyViewModel /> </UserControl.DataContext>
You must define a constructor without parameters for the development environment.
public MyViewModel() : this(new MockEventAggregator()) //for designtime { } [ImportingConstructor] public MyViewModel(IEventAggregator eventAggregator) //for runtime { this._eventAggregator = eventAggregator; //... }
source share