触摸vs鼠标,Silverlight

时间:2011-10-31 20:38:55

标签: silverlight mouse touch

让我们从简单的介绍开始。为了更好地理解我的问题,我已经大大简化了这个例子。

该项目在Silverlight 4中。我有MainPage.xaml,它包含一个Button:

        <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. 鼠标,当我点击椭圆按钮然后它将颜色更改为黄色,

  2. 触摸,当我在椭圆按钮上选项卡然后它不会更改颜色时,会出现默认颜色。当我再次选项卡时,颜色会发生变化。为什么???

  3. 谢谢

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。问题在于其他控件让我们将其称为TestControl,它发生在MainPage页面上。此TestControl控件在其构造函数中附加到FrameReported事件。

因此,MainPage支持“触摸事件提升为鼠标事件”场景,其中使用的TestControl使用FrameReported来处理触摸。现在,当我注释掉这个对FrameReported事件的订阅时,这可以按预期工作,但我还没有aswer如何支持这两个场景。