【问题标题】:How do I stop row selection when a button in DataGridTemplateColumn is clicked in wpf DataGrid在 wpf DataGrid 中单击 DataGridTemplateColumn 中的按钮时如何停止行选择
【发布时间】:2015-11-22 07:22:29
【问题描述】:

我在 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 吗?
  • 不,我对 WPF 有点陌生...因此,没有尝试 PreviewMouseLeftButtonDown。我对将 Handled 设置为 true 和事件冒泡有一个模糊的想法,但它在 MouseLeftButtonDown 事件中不起作用

标签: c# wpf datagrid


【解决方案1】:

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

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

【讨论】:

  • 我已经处理了 PreviewMouseLeftButtonDown 和 PreviewMouseLeftButtonUp 事件,并且在 Click 事件中执行的所有操作现在都在 PreviewMouseLeftButtonUp 中完成。除了在 PreviewMouseLeftButtonDown 中,我正在保存启动事件的按钮,如果相同的按钮启动 PreviewMouseButtonUp 事件而不是处理事件,否则它只会返回非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2019-08-26
  • 2013-01-28
  • 1970-01-01
  • 2017-07-14
  • 2020-08-22
  • 2012-10-14
  • 2020-08-27
  • 2011-04-19
相关资源
最近更新 更多