0

Проблема в чем: мне нужно передать команде параметр в виде Frame. Frame определён в коде XAML. Frame в коде XAML:

<StackPanel Grid.Row="0">
     <Frame x:Name="MainFrame"/>
</StackPanel>

Сама команда:

public RelayCommand OpenNewPage
    {
        get
        {
            return _openNewPage ??
                (_openNewPage = new RelayCommand(obj =>
               {
                   Frame frame = obj as Frame;
                   frame.Content = new TESTPAGE();
               }));
        }
    }

Команда вызывается нажатием на кнопку:

<Button Content="TEST IT!" Command="{Binding OpenNewPage}" CommandParameter="MainFrame"/>

Проблема вот в этом: введите сюда описание изображения

  • Команды находятся во ViewModel, а вьюмодель ничего не должна знать о контролах визуального интерфейса. Передачей Frame вы нарушаете смысл MVVM. – Bulson Nov 09 '19 at 14:54
  • Понял. Принял. Спасибо) – Passanger Feat Nov 09 '19 at 14:59
  • Frame'у вообще не место в нормальном WPF приложение, особенно в том, которое строится по принципу MVVM (ИМХО). Если вам нужен разный контент, то используйте ContentPresenter, который идеально подходит под MVVM подход. – EvgeniyZ Nov 09 '19 at 15:02

0 Answers0