Почему замена DelegateCommand на Command не работает в Prism - PullRequest
0 голосов
/ 08 марта 2019

В Prism Mvvm, Prism.Unity библиотека, когда я заменяю DelegateCommand на Binding Mvvm Command.Это не работает.Это мой рабочий код

public class MainPageViewModel : BindableBase
{
    private DelegateCommand _navigationCommand;

    private INavigationService _navigationService;
    public DelegateCommand NavigateCommand => _navigationCommand ?? (_navigationCommand = new DelegateCommand(ExecuteCommand));

    public MainPageViewModel(INavigationService navigationService)
    {
        _navigationService = navigationService;
    }
    void ExecuteCommand()
    {
        _navigationService.NavigateAsync("SecondPage");
    }
}

Теперь я делаю изменения в DeletegateCommand, Command, не получая огонь.Это мой модифицированный код

public class MainPageViewModel : BindableBase
{
    public ICommand _navigationCommand { private set; get; }
    private INavigationService _navigationService;

    public MainPageViewModel(INavigationService navigationService)
    {
        _navigationService = navigationService;
        _navigationCommand = new Command(() => ExecuteCommand());
    }
    void ExecuteCommand()
    {
        _navigationService.NavigateAsync("SecondPage");
    }
}

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Я неправильно ввел команду в XAML из-за того, что столкнулся с этой проблемой.

Спасибо.

0 голосов
/ 08 марта 2019

Ну, я не совсем уверен, что это может быть причиной, но я думаю, что ваш код должен выглядеть примерно так:

public ICommand NavigationCommand { set; get; }

Затем установите его в конструкторе:

 public MainPageViewModel(INavigationService navigationService)
 {
    _navigationService = navigationService;
    NavigationCommand = new Command(ExecuteCommand);
 }

И ваш метод будет выглядеть примерно так:

private void ExecuteCommand(object obj) 
{
    _navigationService.NavigateAsync("SecondPage");
}

используйте object obj, если вы хотите передать какие-либо данные в качестве параметра команды

...