c# - 如何将 View 构造函数参数传递给 View 模型

标签 c# wpf mvvm

我有一个 View 和 ViewModel。

MyView
{
  MyView(int id)
  {
    InitializeComponent();
  }
}

 MyViewModel
    {
     private int _id;
      public int ID
       {
        get { return _id; }
        set { _id= value; OnPropertyChanged("_id"); }
       }
    }

我将我的 XAML 上的数据上下文设置为:

<Window.DataContext>
        <vm:MyViewModel/>
</Window.DataContext>

单击按钮时,我将 View 显示为:

Application.Current.Dispatcher.Invoke(() => new MyView(id).Show());

现在,如何将 id 从 MyView(id) 传递到 MyViewModel.ID.

最佳答案

由于 DataContext 是在 InitializeComponent() 调用之后创建的,因此您可以随后将其传递给 ViewModel:

MyView
{
   MyView(int id)
   {
     InitializeComponent();
     ((MyViewModel)DataContext).ID = id;
   }
 }

关于c# - 如何将 View 构造函数参数传递给 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29535148/

相关文章:

c# - 在运行时向 WPF DataGrid 添加行和列

mvvm - 在MvvmCross中使用隐式模板选择对ListView进行分组

wpf - 如何在listview中绑定(bind)按钮

c# - ASP :RequiredFieldValidator with the contents being a table row

c# - VBA C# DLL 未注册

c# - 使用 IEnumerable 的测试无法读取在 TextFixtureSetup 中初始化的变量

c# - 从 IoC 容器加载重物会阻塞 UI

.net - 虚拟化 TreeView - 滚动时行为不稳定

C# 代码在 Pinvoke SendMessage 之后挂起

wpf - WPF ListBox项目折叠数据触发不起作用