如何从viewmodel显示其他窗口?

时间:2011-10-07 17:02:13

标签: c# .net wpf mvvm

我有一个简单的示例,我的示例有2个窗口:  1-ProductlistView 2-ProductEditView(1-ProductlistViewModel 2-ProductEditViewModel) 我希望用户可以在我的ProductlistView中选择一个产品,并在ProductEditView中编辑所选产品...我在我的样本中使用此代码:

   public Class   ProductEditViewModel:ViewModelBase 
    {
        private readonly ProductEditView View;
        public ProductModel Model { get; set; }
        public ProductEditViewModel(Product myproduct)
        {
            View = new ProductEditView { DataContext = this };
            if(myproduct!= null) Model  = myproduct;

        }
         private bool IsInDialogMode;
            public bool? ShowDialog()
            {
                if (IsInDialogMode) return null;
                IsInDialogMode = true;
                return View.ShowDialog();
            }
    }

并写入ProductlistViewModel中的editCommant:

  private RelayCommand UpdateProductmdInstance;
   public RelayCommand UpdateProductCommand
        {
            get
            {
                if (UpdateProductmdInstance!= null) return UpdateProductmdInstance;
                UpdateProductmdInstance= new RelayCommand(a => OpenProductDetail(SelectedProduct), p => SelectedProduct!= null);
                return UpdateProductmdInstance;
            }
        }

        private void OpenProductDetail(Product product)
        {
            var ProductEditViewModel= new ProductEditViewModel(product);
            var result = personDetailViewModel.ShowDialog();
       ...
        }

我想知道我的样本是错的? 我可以在viewmodel中从视图中获取实例吗? 如果我的Sample是错误的,我该怎么做这个解决方案(将一个对象发送到其他窗口并在编辑后得到它)?

1 个答案:

答案 0 :(得分:1)

通常建议不要使用引用View的ViewModel。有关如何从ViewModel显示对话框的信息,请参阅this question