Touch против мыши, Silverlight - PullRequest
       15

Touch против мыши, Silverlight

0 голосов
/ 01 ноября 2011

Начнем с простого введения.Для лучшего понимания моей проблемы я резко упростил этот пример.

Проект находится в Silverlight 4. У меня есть файл MainPage.xaml, который состоит из кнопки:

        <Button x:Name="SelectedFillColor" Command="{Binding ChangeColorCommand}" Background="{Binding SelectedColor}">
            <Button.Template>
                <ControlTemplate>
                    <Ellipse Width="80" Height="80" Fill="{TemplateBinding Background}" Stroke="White" StrokeThickness="2"/>
                </ControlTemplate>
            </Button.Template>
        </Button>

Как вывидно, что я использую команду ChangeColorCommand для обработки нажатия / касания.В коде MainPage я просто привязываю ViewModel к DataContext

this.DataContext = new MainPageViewModel(); 

Последний шаг - мой ViewModel, который состоит из метода инициализации команд, запущенного в конструкторе:

    private void InitializeCommands()
    {
        this.ChangeColorCommand = new RelayCommand(() =>
            {
                this.SelectedColor = new SolidColorBrush(Colors.Yellow);
            });
    }

Проблема,

когда я запускаю это как веб-страницу на своем планшете, я использую два устройства:

  1. Мышь, когда я нажимаю кнопку Ellipse, она меняет цвет на Желтый,

  2. Коснитесь, когда я нажимаю на кнопку эллипса, она НЕ меняет цвет, присутствует цвет по умолчанию.Когда я вкладываю снова, то цвет меняется.ПОЧЕМУ ???

Спасибо

1 Ответ

0 голосов
/ 02 ноября 2011

Хорошо, я нашел решение.Проблема в другом элементе управления, назовем его TestControl, который находится на странице MainPage.Этот элемент управления TestControl присоединяется к событию FrameReported в его конструкторе.

Таким образом, MainPage поддерживает сценарий «События касания, повышенные до событий мыши», где используемый TestControl использует FrameReported для обработки касания.Теперь, когда я закомментировал эту подписку на событие FrameReported, она работает, как и ожидалось, но у меня пока нет вопроса, как поддерживать оба сценария.

...