Предотвращение обработки Silverlight DataGrid Введите ключ - PullRequest
4 голосов
/ 15 сентября 2011

У меня есть сетка данных в приложении Silverlight. Если щелкнуть первую строку, а затем нажать клавишу Enter, выбор переместится на следующую строку. Я не хочу такого поведения - клавиша Enter используется на этом экране в совершенно разных целях.

Я понимаю, что это часть структуры редактирования, но мне нужен способ, чтобы отключить ее. Я попытался установить для параметра IsReadOnly значение True (хотя технически элемент управления не предназначен только для чтения), и это не имело никакого эффекта.

Я прикрепил к событию KeyDown сетки данных, но оно не вызывается при нажатии клавиши Enter. Он отлично работает для других клавиш.

Я в тупике. Спасибо за вашу помощь.

1 Ответ

4 голосов
/ 15 сентября 2011

Да, это раздражает.

Насколько я знаю, единственный вариант - создать свой собственный элемент управления, который наследуется от DataGrid, и делать все необходимое, прежде чем передавать событие на базу.

public class NewDataGrid : DataGrid 
{     
    protected override void OnKeyDown(KeyEventArgs e)     
    {         
        if (e.Key == Key.Enter)         
        {
            //do what is needed here             
            e.Handled = true;         
        }         
        base.OnKeyDown(e);     
    } 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...