привязка событий в MVVM - PullRequest
       1

привязка событий в MVVM

2 голосов
/ 01 октября 2011

мой код в ViewModel:

public void Insert_Click(object sender, RoutedEventArgs e)
{
    System.Windows.MessageBox.Show("Insert_Click");
}

код в View:

<Button Click="{Binding Insert_Click}"  Background="Black" Height="56" Name="btnAdd" Width="57">
</Button>

ошибка:

Ошибка 1 Click = "{Binding Insert_Click}" не является действительным.«{Binding Insert_Click}» не является допустимым именем метода обработчика событий.Допустимы только методы экземпляра в сгенерированном классе или классе с выделенным кодом

Пожалуйста, покажите мне правильный код

1 Ответ

5 голосов
/ 01 октября 2011

Подсоединения событий будут работать только для кода позади элемента управления / окна, если вы удалите синтаксис Binding из обработчика событий. Для MVVM это немного по-другому. Вы можете заставить это работать, если переместите обработчик к коду, но я подозреваю, что вы хотите использовать MVVM.

Здесь вам действительно нужно использовать шаблон Command

<Button Command="{Binding Insert}" Background="Black" Height="56" Name="btnAdd" Width="57"/>

и просмотр модели

public ViewModel()
{
     Insert = new RelayCommand(Insert_Click);
}

public ICommand Insert { get; private set; }


private void Insert_Click()
{
    System.Windows.MessageBox.Show("Insert_Click");
}

Это использует такие рамки, как MVVM light

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