Страница Silverlight не перехватывает входные события - PullRequest
0 голосов
/ 01 марта 2009

Я пытался обработать событие KeyDown UserControl (страницы) в моем приложении Silverlight, но, похоже, наблюдается некоторая странная ситуация со стороны функции пользовательского ввода Silverlight. Событие не поднимается ни при каких обстоятельствах. Я даже пытался прикрепить обработчик событий к каждому элементу управления контейнера в UserControl, но все же безуспешно. В самом деле, система пользовательского ввода Silverlight «маршрутизация событий» довольно нова и кажется мне довольно странной, так что, возможно, это просто недоразумение с моей стороны, хотя я и понятия не имею, как поступить.

Следующий код является шаблоном конкретной страницы, с которой я тестирую.

<UserControl x:Class="MyNamespace.CreditsPage"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             KeyDown="UserControl_KeyDown">
    <Grid x:Name="LayoutRoot">
        <Border>
            <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Vertical">
                <TextBlock TextAlignment="Center">
                A line of text.<LineBreak />
                <LineBreak />
                A line of text.<LineBreak />
                <LineBreak />
                A line of text.<LineBreak />
                <LineBreak />
                A line of text.<LineBreak />
                </TextBlock>
            </StackPanel>
        </Border>
    </Grid>
</UserControl>

В WPF очевидным решением для такой проблемы будет обработка события PreviewKeyDown, но, к сожалению, это не доступно в Silverlight 2. Любые идеи приветствуются (и краткое объяснение того, почему маршрутизация событий Silverlight ведет себя так, как она есть). есть).

Ответы [ 2 ]

2 голосов
/ 02 марта 2009

Вы можете управлять пользовательским вводом из основного UIElement: Application.Current.RootVisual

Application.Current.RootVisual.KeyDown += Application_KeyDown

Затем вы можете обработать в методе Application_KeyDown все пользовательские вводы с клавиатуры.

Вы также можете посмотреть на эту проблему: Обработка события KeyDown в Canvas

1 голос
/ 01 марта 2009

Я попробовал предоставленный вами xaml, и у меня не было проблем с передачей события KeyDown.

Одна вещь, которая может быть причиной этого: плагин Silverlight будет видеть входные события, только если он сфокусирован. Поэтому попробуйте щелкнуть содержимое Silverlight в браузере, чтобы выделить его, прежде чем нажимать клавиши.

Дайте мне знать, решит ли это вашу проблему или нет.

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