如何在wpf DataGrid中单击datagridtemplatecolum列中的按钮时停止行选择

本文关键字:按钮 选择 行选 datagridtemplatecolum wpf DataGrid 单击 | 更新日期: 2023-09-27 18:10:11

我在wpf中有一个包含三个按钮的模板列的数据网格。当单击这些按钮中的任何一个时,包含这些按钮的行也会突出显示。我想禁用这个行突出显示和选择。只突出显示不是必需的,该行不应该被选中。

<DataGridTemplateColumn CanUserResize="False" ClipboardContentBinding="{x:Null}" Width="80" Header="L-Op">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel x:Name="LogicalPanel" Orientation="Horizontal">
                            <Button Content="{Binding LogicalOperator, Converter={StaticResource LogicalOperatorValueConverter}}" Foreground="#548DD4" FontStyle="Italic"
                                    Click="LogicalOperator_Click" VerticalAlignment="Center" Margin="3,0,0,3" Width="30">
                                <Button.Template>
                                    <ControlTemplate TargetType="{x:Type Button}">
                                        <ContentPresenter />
                                    </ControlTemplate>
                                </Button.Template>
                            </Button>
                            <Button x:Name="btnAdd" Height="20" Width="20" Style="{StaticResource ShowHideButton}" Margin="2,0" Click="btnAdd_Click" VerticalAlignment="Center" >
                                <Image Source="Add.png" />
                            </Button>
                            <Button x:Name="btnRemove" Height="20" Width="20" Style="{StaticResource ShowHideButton}" Click="btnRemove_Click" VerticalAlignment="Center">
                                <Image Source="remove.jpg" />
                            </Button>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

如何在wpf DataGrid中单击datagridtemplatecolum列中的按钮时停止行选择

您可以使用PreviewMouseLeftButtonDown并在处理程序中设置e.Handled = true;,而不是使用Click Event。您可以在此处理程序中执行代码,并且您的行不应该被突出显示或选中。

但是有一个很大的区别:通常Click事件发生在鼠标按钮向上时,这样它将立即被引发