C # и WPF, при использовании стиля mvvm и действия кнопки в качестве команды с параметром команды, как ВСЕГДА создавать новый объект в параметре команды? - PullRequest
0 голосов
/ 28 декабря 2018

Вот xaml wpf в MainWindow:

<Button
                    x:Name="Add_Button"
                    Content="Add Item"
                    VerticalAlignment="Center"
                    Style="{StaticResource ResourceKey=ActionButtonStyle}"
                    Command="{Binding openAddDialogCommand}">
                    <Button.CommandParameter>
                        <local:MyDialog />
                    </Button.CommandParameter>
                </Button>

Здесь MainWindow уже имеет контекст с ViewModel.openAddDialogCommand - это команда, чтобы открыть его.Сам параметр будет передаваться как IDialogService, а не как само диалоговое окно.

Теперь проблема в том, что MyDialog - это окно, и когда я его закрываю, окно не может быть открыто, еслиэто новый экземпляр.Как всегда возвращать новый экземпляр в качестве параметра?Я попытался использовать переменную в MainWindow классе, который всегда генерирует новый объект в его получателе, затем использовал привязку к кнопке, она не работает вообще, если я не поднял измененное свойство, что слишком сложно, и я неЯ не хочу добавлять больше кода в класс MainWindow.Есть ли простой способ сделать это?

1 Ответ

0 голосов
/ 28 декабря 2018

Вы можете обработать событие click и программно создать новый экземпляр MyDialog вместо использования параметра команды:

private void Button_Click(object sender, RoutedEventArgs e)
{
    var viewModel = DataContext as viewModel:
    viewModel.openAddDialogCommand.Execute(new MyDialog());
}

Это просто вызывает ту же самую команду изто же самое представление, но это более гибко сделать, используя язык программирования, такой как C #, а не язык разметки, такой как XAML.

MVVM - это не исключение кода из представлений, а главным образом разделение интересов.

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