C# – Passing Parameters between xaml window and usercontrol WPF

cmvvmnetwpfxaml

How to pass Parameters from xaml window to WPF usercontrol constructor?
I have tried creating dependency property, but it fails to do it.
Should I try xaml extensions or is there any other way to do it?

<local:Myusercontrol Param1="user1"/>

xaml.cs of the calling Window, well its usercontrol.

public partial class SomeView : UserControl
{
    SomeViewModel vm = new SomeViewModel();
    public SomeView()
    {
        this.DataContext = vm;
        InitializeComponent;
    }
}

InitializeComponent of above window clears value of dependency property set through xaml before creating an instance of the user control and hence value of depencency property is always null.

and usercontrol's xaml.cs

Myusercontrol : UserControl
{
  public Myusercontrol (string User)
  {
    InitializeComponent();
    UserControlViewModel vm = new UserControlViewModel (User);
    this.DataContext = vm;
  }

Note that I am using MVVM pattern.

Best Answer

XAML can't use constructor with parameter. Keep what you've tried with dependency property :

<local:Myusercontrol Param1="user1"/>

then you can try this in constructor :

public Myusercontrol()
{
    InitializeComponent();
    Loaded += (sender, args) =>
          {
                UserControlViewModel vm = new UserControlViewModel(Param1);
                this.DataContext = vm;
          };
}