C# WPF显示鼠标移动位置

C# WPF显示鼠标移动位置,c#,wpf,C#,Wpf,我有XAML: <Grid MouseMove="onMouseMove" > <ItemsControl Name="btnTableImageList"> <ItemsControl.ItemTemplate> <DataTemplate> <Button Content="{Binding Content}" Height="{Binding Height}"

我有XAML:

<Grid MouseMove="onMouseMove" >
  <ItemsControl Name="btnTableImageList">
    <ItemsControl.ItemTemplate>
      <DataTemplate>
        <Button Content="{Binding Content}" 
                Height="{Binding Height}" 
                Width="{Binding Width}" 
                Tag="{Binding Tag}" 
                Margin="{Binding Margin}" 
                Background="{Binding Background}" 
                HorizontalAlignment="Center"  
                MouseDown="tblButton_MouseDown" 
                MouseUp="tblButton_MouseUp" 
                Click="ClickHandlerTableBtn" 
                TextBlock.TextAlignment="Center" />
      </DataTemplate>
    </ItemsControl.ItemTemplate>
  </ItemsControl>
</Grid>
表单上有一个名为LBLCORD的标签,在加载表单后创建了两个按钮

我想在LBLCORD中显示鼠标相对于网格的坐标,但只有当我将鼠标光标移动到放置在该网格内的任何按钮上时,坐标才会显示

我猜我把MouseMove=“onMouseMove”放错地方了


谢谢您的帮助。

当您将网格的
背景设置为除透明之外的任何选项时,它都会起作用
默认情况下,栅格的背景是透明的。当它是透明的时,当您设置
Background=“transparent”
时,鼠标事件也起作用


鼠标事件使用背景IMHO处理最近的父元素。当您将网格的背景设置为非透明时,鼠标事件将起作用 默认情况下,栅格的背景是透明的。当它是透明的时,当您设置
Background=“transparent”
时,鼠标事件也起作用


鼠标事件使用背景IMHO处理最近的父元素

如果不进行测试,我知道WPF中的按钮捕获鼠标单击,它也可能捕获鼠标移动。我得试试看。如果是这样,在WPF中,您可以使用PreviewMouseMove,它首先被捕获。因此,尝试使用PreviewMouseMove,看看是否有效。事件从最外部的内容向下传输到最内部,通常使用前缀为Preview的事件引发。其他事件从最内部冒泡到外部,不包括预览前缀。PreviewMouseMove也会发生同样的情况。只有当鼠标光标移动到按钮上并完全忽略网格或光标后面的任何东西时,位置才会显示,除非它是一个按钮。我必须在代码中处理这个问题。按钮中的内容是什么?验证内容是否未捕获事件。只是扫描一下,这是我的假设,但我不确定。如果网格是透明的,那么它可能不会触发MouseMove事件。我知道你可以在WPF中单击透明。如果它是一个透明度问题,你可以使背景的颜色是如此透明(但不是完全),你看不到它,但它仍然注册点击。MouseMove可能也是如此……按钮是在运行时动态创建的,所以很多东西都是从数据库加载的。但对于测试,您可以将XAML按钮代码更改为,它的行为将完全相同。如果不进行测试,我知道WPF中的按钮捕获鼠标单击,它也可能捕获鼠标移动。我得试试看。如果是这样,在WPF中,您可以使用PreviewMouseMove,它首先被捕获。因此,尝试使用PreviewMouseMove,看看是否有效。事件从最外部的内容向下传输到最内部,通常使用前缀为Preview的事件引发。其他事件从最内部冒泡到外部,不包括预览前缀。PreviewMouseMove也会发生同样的情况。只有当鼠标光标移动到按钮上并完全忽略网格或光标后面的任何东西时,位置才会显示,除非它是一个按钮。我必须在代码中处理这个问题。按钮中的内容是什么?验证内容是否未捕获事件。只是扫描一下,这是我的假设,但我不确定。如果网格是透明的,那么它可能不会触发MouseMove事件。我知道你可以在WPF中单击透明。如果它是一个透明度问题,你可以使背景的颜色是如此透明(但不是完全),你看不到它,但它仍然注册点击。MouseMove可能也是如此……按钮是在运行时动态创建的,所以很多东西都是从数据库加载的。但对于测试,您可以将XAML按钮代码更改为,它的行为将完全相同。
private void onMouseMove(object sender, MouseEventArgs e)
{
    lblCoord.Content = Mouse.GetPosition(Application.Current.MainWindow);
}