Проблема с привязкой кнопки для работы в mvvm - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь привязать кнопку к функции, которая находится в другом проекте (MVVM) . Мой XML -Код (Просмотр) выглядит следующим образом:

<Button Click="{Binding PressMe}">Press Me!</Button>

, а мой ViewModel-код выглядит так:

    public void PressMe()
    {
        Console.WriteLine("Ouch!");
    }

Когда я пытаюсь запустить программу, ошибка "InvalidCastException: объект типа" System.Reflection.RuntimeEventInfo "не может быть преобразован в тип" System.Reflection.MethodInfo ". Есть идеи?

Спасибо за любой ответ

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

если вы используете MVVM, как вы предполагаете, то вам нужно использовать команды вместо нажатия

<Button Command="{Binding Path=PressMe}" />

private ICommand _pressMe;

public ICommand PressMe
{
    get
    {
        if (_pressMe== null)
        {
            _pressMe= new RelayCommand(
                param => this.PressMeObject(), 
                param => this.CanPress()
            );
        }
        return _pressMe;
    }
}


private void PressMeObject()
{
    // Press me logic hier
}

private bool CanPress()
{
    // Verify command can be executed here
}
0 голосов
/ 05 февраля 2020

Click - это событие, поэтому для его работы необходим код.

Пока я предлагаю:

  1. Замена атрибута "click" на "Command" ,

  2. Реализация команды Relay или других сторонних библиотек (например: MVVM Light toolkit ).

Также Реализация ICommand MVVM поможет.

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