我正在为我的Windows Phone编写一个小型媒体播放器(更多用于学习目的),并使用mvvm-light。 当视频播放时,我有一个定时更新滑块位置的定时器(并确保它同步)。当我滑动滑块时,我会暂停计时器,因此它不会跳过。 我使用ManipulationStarted事件暂停计时器,并使用ManipulationComplete恢复计时器。
我尝试过使用EventToCommand,但只触发了ManipulationStarted事件。当我将手指从手机上抬起时,ManipulationComplete不会触发。
这是我的xaml:
<Slider x:Name="PlaybackSlider" HorizontalAlignment="Stretch" Margin="20,0" VerticalAlignment="Bottom" Maximum="{Binding MaxSteps}" Value="{Binding Offset, Mode=TwoWay}" Style="{StaticResource SliderStyle1}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="ManipulationStarted">
<Command:EventToCommand Command="{Binding PlayOffsetBegin}"/>
</i:EventTrigger>
<i:EventTrigger EventName="ManipulationCompleted">
<Command:EventToCommand Command="{Binding PlayOffsetEnd}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseMove">
<Command:EventToCommand Command="{Binding PlayOffsetUpdate}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Slider>
绑定是中继命令。
如果我像这样实现它,一切正常:
<Slider x:Name="PlaybackSlider"
ManipulationStarted="PlaybackSlider_ManipulationStarted"
ManipulationCompleted="PlaybackSlider_ManipulationCompleted"
HorizontalAlignment="Stretch" Margin="20,0" VerticalAlignment="Bottom"
Maximum="{Binding MaxSteps}" Value="{Binding Offset, Mode=TwoWay}"/>