Использование ссылки на Windows.Input для использования ICommand в ВМ - PullRequest
0 голосов
/ 28 мая 2019

Я работаю над приложением UWP, которое основано на шаблоне MVVM. для привязки действий пользовательского интерфейса я использую ICommand в виртуальной машине, для которой мне нужно предоставить ссылку на Windows.Input. Разбивает MVVM.

Если я создаю класс, который реализует интерфейс ICommand, и использую его для привязки команд, то это нарушает правило «Кодирование интерфейсов».

//This is what i am doing currently

public ICommand command;
command = new RelayCommand();

// I have tried this to remove the reference of windows.input from the VM

public RelayCommand command;
command = new RelayCommand();

//isn't it breaking the rule of coding to interfaces

Какой подход я должен придерживаться

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Я предпочитаю использовать x: Bind over RelayCommands для простоты, если вы установили модель представления в файле view.cs, вы можете просто привязать обработчик для события

SessionView.xaml.cs:

Tapped="{x:Bind Path=ViewModel.CancelClick}"

SessionView.cs

    public SessionViewModel ViewModel { get; set; }
    public SessionView() => this.InitializeComponent();

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        var prms = (WindowParameters)e.Parameter;
        prms.Frame = this.Frame;
        this.ViewModel = new SessionViewModel(prms);
        this.DataContext = ViewModel;
        this.ViewModel.LoadFullModel();
    }
0 голосов
/ 28 мая 2019

Первый метод правильный.

Почему вы пытаетесь удалить ссылку на System.Windows.Input? Это просто пространство имен, реальная ссылка на проект - System.dll, который не зависит от платформы.

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