Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在wpf DataGrid中单击DataGridTemplateColumn中的按钮时,如何停止行选择_C#_Wpf_Datagrid - Fatal编程技术网

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

C# 在wpf DataGrid中单击DataGridTemplateColumn中的按钮时,如何停止行选择,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个wpf中的datagrid,其中有一个包含三个按钮的模板列。单击这些按钮中的任何一个时,包含这些按钮的行也会高亮显示。我想禁用此行高亮显示和选择。仅高亮显示不是必需的,不应选择该行 <DataGridTemplateColumn CanUserResize="False" ClipboardContentBinding="{x:Null}" Width="80" Header="L-Op"> <DataGridTemplateColumn

我有一个wpf中的datagrid,其中有一个包含三个按钮的模板列。单击这些按钮中的任何一个时,包含这些按钮的行也会高亮显示。我想禁用此行高亮显示和选择。仅高亮显示不是必需的,不应选择该行

<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事件。您可以在此处理程序中执行代码,并且您的行不应突出显示或选中

<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的新成员。。。因此,没有尝试预览MouseLeftButtonDown。我有一个模糊的想法,就是将Handled设置为true并冒泡事件,但在MouseLeftButtonDown事件中不起作用。我已经处理了PreviewMouseLeftButtonDown和PreviewMouseLeftButtonUp事件,在Click事件中执行的所有操作现在都在PreviewMouseLeftButtonUp中完成。此外,在PreviewMouseLeftButtonDown中,我正在保存启动事件的按钮,如果同一个按钮启动PreviewMouseButtonUp事件,那么事件将被处理,否则它将返回,非常感谢您的帮助