Как показать другое окно из viewmodel? - PullRequest
0 голосов
/ 07 октября 2011

У меня есть простой образец, который имеет 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();
            }
    }

и напишите в мой editCommant в ProductlistViewModel:

  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? Если мой образец неправильный, как я могу сделать это решение (отправить объект в другое окно и после редактирования получить его)?

1 Ответ

1 голос
/ 07 октября 2011

Обычно рекомендуется НЕ использовать ViewModel, ссылающуюся на View.См. этот вопрос о том, как показать диалог из ViewModel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...