在xaml窗口和usercontrol WPF之间传递参数

use*_*678 10 .net c# wpf xaml mvvm

如何将参数从xaml窗口传递给WPF usercontrol构造函数?我已经尝试创建依赖属性,但它无法做到.我应该尝试xaml扩展还是有其他方法可以做到这一点?

<local:Myusercontrol Param1="user1"/>
Run Code Online (Sandbox Code Playgroud)

调用的xaml.cs Window,以及它的用户控件.

public partial class SomeView : UserControl
{
    SomeViewModel vm = new SomeViewModel();
    public SomeView()
    {
        this.DataContext = vm;
        InitializeComponent;
    }
}
Run Code Online (Sandbox Code Playgroud)

InitializeComponent 在创建用户控件的实例之前,上面的窗口清除通过xaml设置的依赖项属性的值,因此depencency属性的值始终为null.

和usercontrol的xaml.cs

Myusercontrol : UserControl
{
  public Myusercontrol (string User)
  {
    InitializeComponent();
    UserControlViewModel vm = new UserControlViewModel (User);
    this.DataContext = vm;
  }
Run Code Online (Sandbox Code Playgroud)

请注意,我使用的是MVVM模式.

har*_*r07 11

XAML不能使用带参数的构造函数.使用依赖属性保留您尝试过的内容:

<local:Myusercontrol Param1="user1"/>
Run Code Online (Sandbox Code Playgroud)

那么你可以在构造函数中尝试这个:

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