Как отобразить пользовательское окно сообщения из события selectedaged сетки данных silverlight? - PullRequest
1 голос
/ 24 ноября 2010

Я хочу отобразить окно пользовательского сообщения с подтверждением (ChildWindow), когда пользователь выбирает строку в DataGrid в Silverlight. Окно сообщения просто имеет 2 кнопки: да и нет. Когда пользователь нажимает Нет, я хочу восстановить ранее выбранный элемент в DataGrid. Я смог сделать все это.

Проблема в том, что когда появляется окно сообщения, и я нажимаю НЕТ, и я восстанавливаю ранее выбранный элемент, элемент, который пользователь пытался выбрать, остается в визуальном состоянии MouseOver, пока я не наведу указатель мыши на какой-либо другой ряд.

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

Любая помощь будет оценена.

Спасибо!

1 Ответ

0 голосов
/ 24 ноября 2010

Это классическая мышь ввода / вывода, которая распространена во многих областях Silverlight, а также во многих других средах.Предполагается, что события входа и выхода мыши будут приходить парами, но они этого не делают, когда что-то перехватывает события мыши.

Вот что здесь происходит, DataGridRow упрощенно отслеживает мышь с помощью стандартногособытия мыши.Однако, когда вы показываете дочернее окно, когда оно находится в состоянии наведения мыши, дальнейшие события мыши не переходят в строку.Когда вы закрываете дочернее окно, мышь уже находится за пределами строки, поэтому она по-прежнему не получает событий.

Возможный обходной путь - самостоятельно поиграть с визуальным состоянием строки перед отображением дочернего окна: -

VisualStateManager.GotoState(someRow, "NormalSelected", false);

Не идеально, но возможно достаточно хорошо.

...