我在 wpf 应用程序中添加了一个数据网格。

<DataGrid ItemsSource="{Binding Projects}" SelectedItem="{Binding SelectedProject}" MouseDoubleClick="DataGrid_MouseDoubleClick" />

这是我的代码
private void DataGrid_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    if selected row is header
        then do this
    else
        do this
}

现在的问题是我是如何知道哪个是双击的。它是标题或一行。我怎样才能找到它。

最佳答案

不是在 DataGrid 中添加双击事件,而是为 DataGridRow 和 DataGridColumnHeader 添加 sperate 事件。
更新的 XAML:

<DataGrid ItemsSource="{Binding Projects}" SelectedItem="{Binding SelectedProject}" MouseDoubleClick="DataGrid_MouseDoubleClick">
    <DataGrid.Resources>
        <Style TargetType="DataGridRow">
            <EventSetter Event="MouseDoubleClick" Handler="DataGridRow_MouseDoubleClick" />
        </Style>
    </DataGrid.Resources>
    <DataGrid.Resources>
        <Style TargetType="DataGridColumnHeader">
            <EventSetter Event="MouseDoubleClick" Handler="DataGridColumnHeader_MouseDoubleClick" />
        </Style>
    </DataGrid.Resources>
</DataGrid>

这是后面的代码。
private void DataGridRow_MouseDoubleClick(object sender, System.Windows.RoutedEventArgs e)
{
    // This is when a row is double clicked.
}

private void DataGridColumnHeader_MouseDoubleClick(object sender, System.Windows.RoutedEventArgs e)
{
    // This is when header is double clicked.
}

关于c# - 如何在datagrid wpf上双击找到标题或行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12928049/

10-16 03:38