2

Есть WPF приложение с 2-мя окнами.

В главной VM создается модальное окно со своем VM и если результат true, то в главной VM выполняются некоторые действия.

Так вот, во второй VM есть вот такая штука:

<Button Grid.Row="9" Content="Сохранить настройки" Command="{Binding SaveSettings}"
        CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"/>

Команда:

public RelayCommand SaveSettings
{
    get
    {
        return _saveSettings ?? (new RelayCommand(obj =>
        {
            Window wnd = obj as Window;
            wnd.DialogResult = true;
            SaveUserConfig();
        }, obj => !_settings.Equals(_oldSettings)));
    }
}

Но это же, вроде, нарушает принципы MVVM? Можно через событие, но тогда будет не чистый MVVM.

Собственно, как более правильно присвоить DialogResult ?

iluxa1810
  • 24,899
  • 1
    https://ru.stackoverflow.com/a/526028/218063 – Андрей NOP Feb 15 '19 at 09:03
  • А вообще если окон не много, можно вообще от них отказаться и сделать всё в одном окне (или одной из его панелей), меняя его VM и рисуя то что надо с помощью DataTemplate – Андрей NOP Feb 15 '19 at 09:05

0 Answers0