通过双击标题最大化 window 时,WPF DataGrid MouseLeftButtonUp 被触发

WPF DataGrid MouseLeftButtonUp get fired when maximizing window by double click on title

当我通过双击标题栏最大化 window 时,我的 DataGrid 得到展开并且无意中触发了 MouseLeftButtonUp 事件。

我使用 MouseLeftButtonUp 来检测单击了哪个单元格。在这种情况下,我想最大化 window 而不是单击 DataGrid 中的元素。

如何防止它在用户最大化 window 时触发或将其与普通用户单击 DataGrid 区分开来?在这种情况下,ClickCount 等于 1。

这是我的代码

MainWindow.xaml:

<Window x:Class="testing.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:testing"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid MouseLeftButtonUp="MouseSingleClick">
        </DataGrid>
    </Grid>
</Window>

MainWindow.xaml.cs:

private void MouseSingleClick(object sender, MouseButtonEventArgs e)
{
    Console.WriteLine($"Click: {e.ClickCount}");
}

谢谢。

尝试使用 MouseLeftButtonDown 事件而不是 up 事件

<Window x:Class="testing.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:testing"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <DataGrid Name="grdDB" MouseLeftButtonDown="grdDB_MouseLeftButtonDown">
    </DataGrid>
</Grid>

MainWindow.xaml.cs

    private void grdDB_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        MessageBox.Show($"Click: {e.ClickCount}");
    }