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

时间:2015-12-24 08:49:24

标签: c# wpf mvvm mouseevent

发现鼠标在大多数情况下正常工作,当我的鼠标在初始点击后开始移动时,它们就不会被解雇。我有一个非常重的鼠标移动事件。因此,我可以得出的唯一结论是鼠标移动事件是一些如何防止鼠标按钮事件被触发。请有任何想法。

注意:我使用的是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>

2 个答案:

答案 0 :(得分:1)

我没有观察到您描述的行为,因此我建议您简化问题以了解正在发生的事情。

例如,删除您的图片并仅使用网格来查看是否有变化。

我使用了以下代码,它对我很有用:

 <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>

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

希望它有所帮助。

答案 1 :(得分:0)

谢谢你们。问题是,我的图像尺寸小于网格。正如@Ouarzy建议的那样,只有网格并尝试过。鼠标事件按预期工作。