Dav*_*het 3 wpf slider caliburn.micro
我有一个与Caliburn.Micro的WPF应用程序.
我想处理滑块的移动,即MouseUp事件.
<Slider cal:Message.Attach="[Event MouseUp] = [Action OnSliderMouseUp($this)]"
Value="{Binding PlayerPosition, Mode=OneWay}" MinWidth="200"
VerticalAlignment="Center" Minimum="0"
Maximum="{Binding Player.NaturalDuration.TimeSpan.TotalMilliseconds}"/>
Run Code Online (Sandbox Code Playgroud)
在ViewModel中:
public void OnSliderMouseUp(Slider slider)
{
int blah = 9;
}
Run Code Online (Sandbox Code Playgroud)
OnSliderMouseUp()永远不会被称为.你能告诉我我错过了什么吗?
实际上你有两个问题:
该Slider控件不触发该MouseUp事件.如果您对用户停止拖动滑块时触发的事件感兴趣,那么您正在寻找Thumb.DragCompleted.您可以在此处找到更多信息:WPF:Slider,其中包含用户拖动后触发的事件
但如果你写的话
<Slider cal:Message.Attach="[Event Thumb.DragCompleted] = [Action OnSliderMouseUp($this)]" />
Run Code Online (Sandbox Code Playgroud)
它仍然无法运作.因为Caliburn.Micro(System.Windows.Interactiviy.EventTrigger由Calibrun.Micro使用的预处理)不支持附加事件.有关更多信息和解决方法,请参阅:使用附带事件与caliburn micro Message.Attach
这是一个有效的灵魂(RoutedEventTrigger从上述问题的实施):
<Slider Value="{Binding PlayerPosition, Mode=OneWay}" MinWidth="200" ...>
<i:Interaction.Triggers>
<local:RoutedEventTrigger RoutedEvent="Thumb.DragCompleted">
<cal:ActionMessage MethodName="OnSliderMouseUp">
<cal:Parameter Value="$source" />
</cal:ActionMessage>
</local:RoutedEventTrigger>
</i:Interaction.Triggers>
</Slider>
Run Code Online (Sandbox Code Playgroud)
请注意,因为Thumb.DragCompleted附加事件$this不起作用,您需要使用$ source.
| 归档时间: |
|
| 查看次数: |
2452 次 |
| 最近记录: |