gpt4 book ai didi

wpf - Caliburn.Micro Action 不起作用

转载 作者:行者123 更新时间:2023-12-04 21:12:37 36 4
gpt4 key购买 nike

我有一个带有 Caliburn.Micro 的 WPF 应用程序。

我想处理 slider 的移动,即 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}"/>

在 ViewModel 中:

public void OnSliderMouseUp(Slider slider)
{
int blah = 9;
}

OnSliderMouseUp() 永远不会被调用。你能告诉我我错过了什么吗?

最佳答案

其实你有两个问题:

  1. Slider 控件不会触发 MouseUp 事件。如果您对用户停止拖动 slider 时触发的事件感兴趣,您正在寻找 Thumb.DragCompleted .您可以在这里找到更多信息:WPF: Slider with an event that triggers after a user drags

  2. 但是如果你要写

    <Slider cal:Message.Attach="[Event Thumb.DragCompleted] = [Action OnSliderMouseUp($this)]"  />

    还是不行。因为 Caliburn.Micro(准确地说是 Calibrun.Micro 使用的 System.Windows.Interactiviy.EventTrigger)不支持附加事件。有关详细信息和解决方法,请参阅:using attached events with 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>

请注意,由于 Thumb.DragCompleted 附加事件 $this 不起作用,您需要改用 $source

关于wpf - Caliburn.Micro Action 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12324761/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com