让我们从简单的介绍开始。为了更好地理解我的问题,我已经大大简化了这个例子。
该项目在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);
});
}
问题,
当我在平板电脑上将其作为网页运行时,我使用了两个设备:
鼠标,当我点击椭圆按钮然后它将颜色更改为黄色,
触摸,当我在椭圆按钮上选项卡然后它不会更改颜色时,会出现默认颜色。当我再次选项卡时,颜色会发生变化。为什么???
谢谢
答案 0 :(得分:0)
好的,我找到了解决方案。问题在于其他控件让我们将其称为TestControl,它发生在MainPage页面上。此TestControl控件在其构造函数中附加到FrameReported事件。
因此,MainPage支持“触摸事件提升为鼠标事件”场景,其中使用的TestControl使用FrameReported来处理触摸。现在,当我注释掉这个对FrameReported事件的订阅时,这可以按预期工作,但我还没有aswer如何支持这两个场景。