Как я могу проверить вызывающую команду в RowEditEnding в WPF, чтобы убедиться, что я хочу выполнить событие? - PullRequest
0 голосов
/ 14 декабря 2010

У меня есть некоторые требования для проверки в моем обработчике событий RowEditEnding. Однако существуют определенные условия, при которых они не запускаются: если нажата кнопка удаления, если пользователь переходит к подробной форме для работы с записью и т. Д.

Как я могу проверить вызывающую команду, чтобы убедиться, что одно из «Исключений из правила» находится в игре, прежде чем пытаться проверить данные в строке?

В настоящее время псевдокод выглядит примерно так:

private void resultsGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
    if (!allFieldsAreValid)
    {
        e.Cancel = true;
        return;
    }
    return;
}

Я бы хотел, чтобы это выглядело так:

private void resultsGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
    if ( CommandToDeleteRow || CommandToGoToForm )
        return;
    if (!allFieldsAreValid)
    {
        e.Cancel = true;
        return;
    }
    return;
}

Спасибо!

1 Ответ

1 голос
/ 14 декабря 2010

Взгляните на реализацию проверки в DataGrid; что позволит вам выполнять проверку всякий раз, когда элемент изменяется в вашей модели как на уровне ячейки, так и на уровне строк. Кроме того, вы также можете проверить IEditableObject , поскольку это позволит вам выполнить откат изменений в вашей модели.

Это отодвинет вас от использования обработчиков событий, а также к подходу MVVM; что после первоначального препятствия сделает вашу жизнь проще.

...