WPF网格:鼠标移动后不会触发MouseUp事件

本文关键字:MouseUp 事件 网格 鼠标 移动 WPF | 更新日期: 2023-09-27 18:27:53

已经发现,鼠标向上在大多数时候都能正常工作,只是当我的鼠标在第一次点击后开始移动时,它们不会被触发。我有一个相当重的鼠标移动事件。因此,我能得出的唯一结论是,鼠标移动事件是如何防止鼠标按下事件触发的。有什么想法吗。

注意:我使用的是MVVM模型。

<Grid >
    <Image x:Name="DynamicJoystickWindow" RenderTransformOrigin="0.5,0.5">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="PreviewMouseUp" >
                <cmd:EventToCommand Command="{Binding JoystickMouseUp_Dynamic}" PassEventArgsToCommand="True" />
            </i:EventTrigger>
            <!--<i:EventTrigger EventName="MouseUp" >
                <cmd:EventToCommand Command="{Binding JoystickMouseUp_Dynamic}" PassEventArgsToCommand="True" />
            </i:EventTrigger>-->
            <i:EventTrigger EventName="PreviewMouseDown">
                <cmd:EventToCommand Command="{Binding JoystickMouseDown_Dynamic}" PassEventArgsToCommand="True" />
            </i:EventTrigger>
            <i:EventTrigger EventName="PreviewMouseMove" >
                <cmd:EventToCommand Command="{Binding JoystickMouseMove_Dynamic}" PassEventArgsToCommand="True" />
            </i:EventTrigger>
            <!--<i:EventTrigger EventName="MouseMove" >
                <cmd:EventToCommand Command="{Binding JoystickMouseMove_Dynamic}" PassEventArgsToCommand="True" />
            </i:EventTrigger>-->
        </i:Interaction.Triggers>
        <Image.RenderTransform>
            <ScaleTransform ScaleX="{Binding RenderScaleTransform}" ScaleY="{Binding RenderScaleTransform}"/>
        </Image.RenderTransform>
        <Image.Style>
            <Style TargetType="{x:Type Image}">
                <Setter Property="Source" Value="Resources/transparent.png"/>
                <Setter Property="Opacity" Value="0.3" />
            </Style>
        </Image.Style>
    </Image>
</Grid>

WPF网格:鼠标移动后不会触发MouseUp事件

我没有观察到你描述的行为,所以我建议你简化你的问题,以了解发生了什么。

例如,删除您的图像并只使用网格来查看是否有更改。

我使用了以下代码,它对我来说很好:

 <Grid x:Name="DynamicJoystickWindow" RenderTransformOrigin="0.5,0.5" Background="Blue">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="PreviewMouseUp" >
                        <command:EventToCommand Command="{Binding JoystickMouseUp_Dynamic}" PassEventArgsToCommand="True" />
                    </i:EventTrigger>
                    <i:EventTrigger EventName="PreviewMouseDown">
                        <command:EventToCommand Command="{Binding JoystickMouseDown_Dynamic}" PassEventArgsToCommand="True" />
                    </i:EventTrigger>
                    <i:EventTrigger EventName="PreviewMouseMove" >
                        <command:EventToCommand Command="{Binding JoystickMouseMove_Dynamic}" PassEventArgsToCommand="True" />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
        </Grid>

事件未被触发的唯一情况是当我完成网格外的移动时。

希望能有所帮助。

谢谢大家。问题是,我的图像大小小于网格。正如@Ouarzy所建议的那样,只使用网格并尝试。鼠标事件按预期工作。