Проблема с открытием дочернего окна из главного окна с использованием WPF с MVVM - PullRequest
0 голосов
/ 15 августа 2011

Я изучаю WPF с MV-VM.И я использую ICommand, RelayCommand.У меня есть несколько видов, моделей и моделей.MainWIndowView открывается при запуске приложения.MainWindowView имеет кнопку, которая открывает другое окно WPF с именем «FileListview» через MainWindowViewModel.FileListView имеет кнопку «Просмотр просмотра», которая должна открыть другое окно WPF под названием «LookupView» через FileListViewModel.Но я не смог бы заставить эту кнопку работать, если я не укажу FileListView в App.xaml.cs вместо MainWIndowView.Я не мог понять, почему кнопка «Просмотр» работает, если я запускаю приложение из «FileListView».Я также не понимаю, нужна ли мне модель для MainWindowView и FileListView, поскольку у меня ничего не происходит, кроме того, что кнопка одного представления открывает другое представление.В коде файла «App.xaml.cs» у меня есть

public partial class App : Application
{
  protected override void OnStartup(StartupEventArgs e)
    {
      base.OnStartup(e);
      WPFProject. MainWIndowView window = new MainWIndowView ();
      MainWIndowViewModel  VM = new MainWIndowViewModel ();
      window.DataContext = VM;
      window.Show();
    }
 }

. Буду признателен, если кто-нибудь подскажет мне хорошую статью или пример кода с использованием WPF с MV-VM, которые отражают мою проблему.

Ответы [ 2 ]

1 голос
/ 16 августа 2011

Здесь - мой подход к использованию диалоговых / дочерних окон с mvvm и wpf.пожалуйста, обратите внимание на комментарий от sllev и опубликуйте весь соответствующий код.

0 голосов
/ 16 августа 2011

После переосмысления проблемы я смог найти решение. Причина проблемы: я не связывал View с его классом ViewModel. Поэтому я поместил следующий код в код позади FileListView.xaml.cs.

public partial class FileListView: Window
{
  private FileListViewModel  _ fileListViewModel = new FileListViewModel ();
  public FileListViewModel () 
  {
    InitializeComponent();
    base.DataContext = _fileListViewModel; 
  }
}

Спасибо

...