c# - 在 wpf DataGrid 中单击 DataGridTemplateColumn 中的按钮时如何停止行选择

标签 c# wpf datagrid

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

最佳答案

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

但是有一个很大的区别:通常在鼠标按钮松开时会发生 Click 事件,这样它会立即引发。

关于c# - 在 wpf DataGrid 中单击 DataGridTemplateColumn 中的按钮时如何停止行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32257361/

相关文章:

c# - 无法确定保存订单时关系的主体端 - EF6

c# - 我如何清除 IEnumerable<ImapX.Messages>?

c# - 合并重叠范围的算法

wpf - WPF中如何判断按钮点击事件是由键盘还是鼠标触发的?

WPF RibbonApplicationMenuItem 命令绑定(bind)

sorting - 当排序更改时,dojo datagrid 将使页面变为 "jump"

c# - Unity3D SetActive 卡住UI面板

c# - 我们什么时候使用 MVVM?

c# - 如何使用 List<Object[]> 在 WPF 中填充 DataGrid?

c# - 绑定(bind)datagrid和mysql数据库