首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WPF datagrid -如何在选择子控件时停止被选中的单元格

WPF datagrid是一种用于显示和编辑数据的强大控件。在选择子控件时停止被选中的单元格,可以通过以下几种方法实现:

  1. 使用IsHitTestVisible属性:将子控件的IsHitTestVisible属性设置为false,可以阻止鼠标点击事件传递到子控件,从而停止被选中的单元格。这样,当鼠标点击子控件时,单元格不会被选中。具体实现代码如下:
代码语言:txt
复制
<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button IsHitTestVisible="False" Content="子控件"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
  1. 使用PreviewMouseDown事件:在DataGrid的PreviewMouseDown事件中,判断鼠标点击的位置是否在子控件上,如果是,则取消事件的进一步传递,从而停止被选中的单元格。具体实现代码如下:
代码语言:txt
复制
<DataGrid PreviewMouseDown="DataGrid_PreviewMouseDown">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Content="子控件"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
代码语言:txt
复制
private void DataGrid_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    var source = e.OriginalSource as DependencyObject;
    if (source != null && source.GetType() == typeof(Button))
    {
        e.Handled = true;
    }
}
  1. 使用DataGridCell的IsEnabled属性:将DataGridCell的IsEnabled属性设置为false,可以禁用单元格,从而阻止被选中。具体实现代码如下:
代码语言:txt
复制
<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button IsEnabled="False" Content="子控件"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

以上是三种常见的方法来停止被选中的单元格。根据具体需求和场景,选择适合的方法即可。对于WPF datagrid的更多详细信息和使用方法,可以参考腾讯云的WPF datagrid相关产品文档:WPF datagrid产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# WPF DataGrid获取单元格并改变背景色

01 概述 WPF 自带了一个表格控件datagrid,这个控件类似winfrom中datagridview,在数据显示时候也经常会用到,这节主要讲解如何从后台代码获取到单元格控件并改变其相关属性:...> 04 解析 ① 因为我需要绑定SelectedCellsChanged事件,所以前台将默认选中模式修改为单元格选中模式: SelectionMode="...Single" SelectionUnit="Cell" 这样修改后SelectionChanged这个事件将不再触发(只有在行选中模式下生效); ②获取选中单元格值: var info = this.dgSourceData.SelectedCells.FirstOrDefault...;//获取选中单元格列号 ④获取选中行号 在SelectionUnit="FullRow" 时候: 可以通过这样获取: rowindex = this.dgSourceData.SelectedIndex...;//获取选中单元格行号 在当SelectionUnit="Cell": 我是通过选中单元格对应行信息和表格控件绑定集合匹配获取行号: for (int i = 0; i < ShellViewModel.StudentList.Count

2.7K20

OEA 中 WPF 树型表格虚拟化设计方案

我们得先看看如何在 WPF 中实现虚拟化。...默认为 False ,ScollViewer 自己实现了滚动逻辑,在 Measure 时会把 Infinite 传给 Content 元素;而当该值设置为 True,ScrollViwer 认为它...也就是说,TreeGrid 作为一个 ItemsControl,其中所有单元格 TreeGridCell 都必须作为它逻辑容器。这样设计虽然实现了界面虚拟化,但是并不可取。...那么,在这样层次要求下,要如何实现只使用一个滚动条虚拟化呢?还好,WPF 自带 DataGrid 也带有行列虚拟化功能,我们可以先看一下 DataGrid 是如何实现。...而表格行 TreeGridRow 类则继承自 HeaderedItemsControl 类型,它总行高应该是本行高度加上所有高度,也不是一个定值,所以现在虚拟化功能也关闭。

2.7K70
  • Newbeecoder.UI新版开源控件DataGrid使用说明

    DataGrid控件显示数据和信息集合。在WPF能自定义外观,单元格,表格头部,字体,颜色等内容。 使用ItemsSource属性进行数据源绑定,绑定任何实现IEnuemerable数据源。...默认情况下,当用户单击DataGrid单元格时会选择整行,如果用户选择多行设置SelectionMode属性。假如不想生成自动列使用AutoGenerateColumns属性设置为false。...Microsoft Docs对DataGrid每项功能有详细说明。 在样式中有常见表格选项,交替行背景和显示/隐藏标题,网格线和滚动条。...Newbeecoder.UI是一个轻量级和扩展性开源项目,基于MVVM开发框架,可用来快速搭建WPF应用程序,而无需了解控件内部实现细节,方便扩展更多控件样式以及使用,该项目使用纯C#+WPF开发,易于扩展和集成到开发项目中...开发框架经过严格技术验证和系统测试,压力测试,得到广大用户赞誉和好评。我们积极收集用户反馈意见,不断完善和改进,最新版本极少有系统性缺陷。

    2.9K30

    【愚公系列】2023年10月 WPF控件专题 DataGrid控件详解

    WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供内置控件Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见标准用户界面元素。...一、DataGrid控件详解WPFDataGrid是一个非常强大和灵活控件,它可用于展示和编辑数据。...2.常用场景WPFDataGrid控件常用场景包括以下几个方面:数据展示:DataGrid控件可以方便地展示数据表格,特别是当数据量比较大,使用DataGrid可以快速地进行数据查看和筛选。...数据编辑:DataGrid控件可以支持数据编辑,包括单元格编辑、行编辑和列编辑等方式,方便用户对数据进行修改和更新。...数据分页:DataGrid控件可以支持数据分页显示,当数据量比较大,可以将数据分页展示,方便用户进行快速数据浏览和查找。

    1.2K00

    WPF DataGrid 如何将被选中行带到视野中

    WPF DataGrid 如何将被选中行带到视野中 目录 前言 准备工作 方法一 方法二 总结 独立观察员 2021 年 12 月 11 日 前言 在 WPF 开发中,显示表格一般使用 DataGrid...控件,而且我们一般会依据用户选中操作来执行一些逻辑,这种情况,选中了哪一行,用户是心知肚明。...使用还是之前用过 DataGrid Demo 程序(在《WPF DataGrid 通过自定义表头模拟首行固定》和《WPF 触屏事件后触发鼠标事件问题及 DataGrid 误触问题》中用过),加了一个可以填写要选中行号文本框...Selected 触发祖先。...先给 DataGrid 命个名( x:Name="Dg" )方便后台使用,然后在 ViewModel 中添加一个选中项改变事件 SelectedItemChanged,并在选中项改变时调用(参数为选中索引

    1.9K10

    WPF DataGrid 通过自定义表头模拟首行固定

    WPF DataGrid 通过自定义表头模拟首行固定 独立观察员 2021 年 9 月 25 日 最近工作中要在 WPF 中做个表格,自然首选就是 DataGrid 控件了。...一开始,参照了其它界面,这一行还是通过数据行来做,只不过绑定数据项中有一个特殊属性来表明这是个特殊行,界面上通过数据模板选择器来自动展现出特别的内容(新增按钮及相关文字,并把其它字段内容隐藏)。...界面代码结构如下: 可以看到资源里有一个普通表头样式、一个用于特殊列特殊表头样式,还有行样式、单元格样式等,还有个包含了新增按钮控件模板样式。...最后就是表格控件 DataGrid 了,使用了上面这些资源,默认使用是普通表头样式,所以普通列就不用特地指定样式了。...另外,表格通过 ItemsSource 绑定了数据,通过 SelectedItem 绑定了选中项。 先来看看普通表头样式,这里实际是设置表头中每一格样式。

    2.4K10

    XAML常用控件2

    布局控件 除了我们之前讲过Grid,StackPanel,Border布局控件,xaml中还有如下几个布局控件: Canvas:使用这个布局,可以通过坐标来控制控件显示。...wpf和WinForm中XY轴定义是一样,都是从程序左上角作为原点,原点到右上角这一条线是X轴,原点到左下角这一条线是Y轴。...WarpPanel:这个布局跟StackPanel很相像,它是流式布局,同样是使用Orientation属性来控制控件排列,但是比StackPanel更强大功能是当控件不能在一行或者一列排开,它会自另起一行或一列..."); } 程序运行时,当我点击菜单项1会弹出MessageBox框提示“菜单1被选中了”,取消选中时会提示“菜单1取消选中”,效果如下: ListBox:这个控件是个使用频率很高控件...> 该控件同样是使用ItemsSource来绑定数据,我们使用该控件要先通过DataGrid.Columns来定义列数量及类型,微软已经为我们定义了上述代码中所示文本

    2.3K30

    常见 Datagrid 错误

    例如,Datagrid 处于“Edit”(编辑)模式,忽略该项检查将导致已编辑数据源中原始值覆盖。然而,该规则至少有一个主要例外,请参阅持续使用大型 ViewState。...例如,有时需要在选择其他页面选项后,才能在运行时确定用户界面。或是要创建一个复合服务器控件,其中每个子控件都需要动态创建,因为无法以声明方式创建这些控件。...对 Datagrid 控件或包含 Datagrid 页面禁用 ViewState ,如果 Datagrid 会启动回发事件,那么需要执行一些特殊步骤。...添加单元格Datagrid 表格输出,这些事件可以用于控制每个单元格外观或内容。例如,可以基于数值范围修改单元格背景颜色。...HTML 有更多控制,过多地使用了 Datagrid(Repeater 也许是更好选择) 如果懒散程序员喜欢 Datagrid 控件(因为 Datagrid 控件为他们完成了很多工作),那么有着极强控制欲程序员必定喜欢

    2.3K20

    盘点7个开源WPF控件

    盘点7个WPF控件,有窗口托拉拽控件、Excel控件、列表排序控件、适合管理系统一整套UI控件等。...1、一个可拖拉实现列表排序WPF开源控件 项目简介 gong-wpf-dragdrop是一个开源.NET项目,用于在WPF应用程序中实现拖放功能,可以让开发人员快速、简单实现拖放操作功能。...支持控件有:ListBox、ListView、TreeView和DataGrid、及其他ItemsControl。...包含组件:数据表格、属性列表、树形列表、选色器、单选框列表、下拉选择框、输入框、文件选择器、目录选择器、窗口拆分器、数字增减控件、链接控件、拖拉进度条、文本框、弹出框、自定义格式对话框。...控件核心功能 1、工作簿:支持多工作表、工作表选项卡控件; 2、工作表:支持合并、取消合并、单元格编辑、数据格式、自定义单元格、填充数据序列、单元格文本旋转、富文本、剪贴板、下拉列表单元格、边框、样式、

    1.9K20

    WPF --- 如何重写WPF原生控件样式?

    引言 上一篇中 WPF --- 重写圆角DataGrid样式,因新产品UI需要,重写了一下微软 「WPF」 原生 DataGrid 样式,包含如下内容: 基础设置,一些基本背景色,字体颜色等。...解决方法 我来分别分享一下我遇到这两个问题。 问题1 第一个,如何获取 「WPF」 原生 DataGrid 样式?...比如 ComboBox 控件,我刚开始学习WPF时候,我就不理解这个是怎么实现,我后来还是通过查询微软官方文档 [1]ComboBox Styles and Templates ,文档里给出了...「第二步:」 选中 ComboBox ,在设计视图左上角点击 ComboBox 下拉框,再点击“编辑模板”,再点击“编辑副本”。 这时会弹出创建资源窗体,可以选择你创建样式形式是什么。...关键字选项:可以选择你创建样式是否带 Key,若不带 Key 则默认应用在所有该类型控件上。 定义位置选项:“应用程序”选项会将该样式创建到 App.xaml 文件中。

    46020

    OEA 中 WPF 树型表格整体重构

    而我们表格 API,也应该象 WPF 原生 System.Windows.Controls.DataGrid 控件接口类似。...元素逻辑行为与渲染是分离:     在元素发生诸如点击、拖动、选择等逻辑行为时,其实只变更了它内部状态数据。...通过添加一些 bool 类型防止重入字段,Measure 中可以做所有逻辑操作之后、渲染之前控件构造、刷新、替换、状态变更,并对最终确定可视树元素进行测量。: if(this....所以,在开发自定义控件,尽量不要把控件可视树关系要求得过于严格。当没有指定可视树关系,也不应该抛出异常。而是应该检测,如果在有指定元素情况下,才表现出具体行为,否则将没有行为。...OnApplyTemplate 只会在 ApplyTemplate 方法第一次执行时调用。我们经常会重写控件这个方法,在其中查找指定可视树元素。

    1.8K60

    WPF面试题大全,秒杀面试官必备

    12、C#中表单界面上,有一个DataGrid控件,如何将SQL数据库里一个表中数据显示在这个控件上,请描述一下操作方法及步骤 ? 13、解释完整WPF对象层次结构 ?...当一个元素触发一个直接路由事件,该事件会沿着元素树向上或向下进行传播,直到找到一个处理该事件元素。处理直接路由事件元素可以是触发事件元素本身,也可以是其父级或级元素。...."DataGrid控件,并自动根据数据源生成列。...这将使DataGrid显示查询结果中数据。 运行应用程序,DataGrid控件将显示来自SQL数据库表数据。 以上代码仅供参考,根据项目的实际情况来调整。 13、解释完整WPF对象层次结构 ?...Control 类是所有控件基类,它添加了样式、数据绑定等功能。 18、你用过WPF触发器吗?触发器有哪几种? 答:触发器可以用于在满足特定条件自动执行操作。

    73710

    C# WPF数据绑定方法以及重写数据模板后数据绑定

    写在前面 本文将会介绍WPF如何实现前后端数据绑定和在进行数据绑定时常用方法和类以及对于DataGrid、ListView这样控件重写数据模板后控件如何进行数据绑定。...如果您是C#及WPF资深开发人员本文可能对您没有太大帮助,但如果你是一个正在学习和了解C#、WPF开发人员来说本文可以帮助你认识MVVM设计模式和数据绑定。...set; } 25 26 /// 27 /// 绑定前台DataGrid控件SelectedItem字段上,用于保存当前选中Item所对应数据源...点击右下角“修改Text内容按钮”下方TextBlock控件内容发生改变 修改小明姓名后点击删除按钮,提示信息显示小明姓名也更改,说明数据源同时进行了更改。...3.数据模板重写:在本实例中重写了DataGrid控件电话一列和删除一列数据模板,我们可以看到电话一列重写为了TextBox删除一列重写为了Button,表头也可以进行数据模板重写。

    63240

    C# WPF DataGrid下面 使用CheckBox 选中事件

    控件文件中 第一种方式:在对应铯中实现 格子 数据网格名称='DG1 '网格Row='5 '网格column span=' 4 ' items source=' { Binding my list,...-绑定是启用是类中属性叫做属性自己可以随便定义即可(定义弯曲件类型)-复选框水平对齐=' Center ' Click=' CheckBox _ Click '被选中=' {启用绑定} '//数据模板.../数据网格模板列.单元格模板/数据网格模板列 datagrid文本列宽=' 250 '是readonly=' true '单元格样式=' { static resource NoBoundaryDataGridCell...} ' Header='其他测试Binding='{Binding ExpiryDate,Mode=TwoWay}'//DataGrid .列 数据网格 对应特许测量员文件中事件 private void...容器索引(DG1 .SelectedIndex);//这里是拿到所选中行函数项选择项=(函数项)(cntr为DataGridRow).数据上下文;//这里是把选中行转换为对象,进而拿到检验盒中绑定名字

    2.8K40

    【愚公系列】2023年11月 WPF控件专题 GridView控件详解

    WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供内置控件Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见标准用户界面元素。...一、GridView控件详解WPFGridView控件是用于展示数据一种列表控件。...GridView控件可以根据数据类型自动选择最合适列类型,并支持自定义列样式和列模板,以便更好地呈现数据。...GridView控件与其他WPF控件配合使用可以实现更高级功能,例如与TreeView控件配合使用实现分层数据呈现,与DataGrid控件配合使用实现可编辑数据表格呈现等等。...多样化显示效果:GridView支持多种显示效果,单元格合并、行列交替显示等。GridView控件WPF中一个非常实用数据展示控件,适用于各种数据展示和编辑场景。

    62511

    WPF 触屏事件后触发鼠标事件问题及 DataGrid 误触问题

    WPF 触屏事件后触发鼠标事件问题及 DataGrid 误触问题 目录 一、触屏事件连带触发鼠标事件问题 二、DataGrid 误触问题及解决方法 独立观察员 2021 年 10 月 10 日 一、...先来说说具体现象:触屏操作,如果程序里使用了触屏事件(:PreviewTouchDown、TouchDown、PreviewTouchUp、TouchUp),那么相应地会接着触发鼠标事件(PreviewMouseDown...这个方法能满足部分场景,比如之前有这样一个问题,在 DataGrid 表格上方有一个 DatePicker 日期选择控件,日期展开后,下拉悬浮框会遮在表格上,当在下拉悬浮框中选择日期后下拉框收起,这时却在表格上产生了某个条目的选中效果...注意,本文将在上篇文章《WPF DataGrid 通过自定义表头模拟首行固定》示例程序基础上进行演示,建议先看看那篇文章。下面开始改造。...另外,之前说过弹窗点击是的情况下,后续没有误触现象,所以也有理由怀疑是从代码中改变了选中项(已绑定到 DataGrid 选中项)所以会有这个问题。

    2.8K10

    WPF 属性变动后业务处理及恢复原始值方法

    讨教了一下 WPF行为 Behavior使用通用附加属性来减少 WPF 元素自定义样式多余代码几十款 WPF 控件 - UI 库,总有一款适合你WPF 用户控件分享之边上带输入框圆圈分享一个...WPF 气泡弹框WPF 表单验证之 INotifyDataErrorlnfo 接口使用示例[翻译] WPF 中用户控件 DataContext/Binding 和依赖属性问题OxyPlot 导出图片及...WPF 元素导出为图片方法让 WPF RadioButton 支持再次点击取消选中功能WPF DataGrid 如何将被选中行带到视野中WPF 触屏事件后触发鼠标事件问题及 DataGrid...误触问题WPF DataGrid 通过自定义表头模拟首行固定WPF ComboBox 使用 ResourceBinding 动态绑定资源键并支持语言切换【翻译】WPF 中附加行为介绍 Introduction...实现 RadioButton 的当前样式效果WPF 原生绑定和命令功能使用指南WPF 用户控件自定义依赖属性在 MVVM 模式下使用备忘在 WPF MVVM 模式中使用 OCX 组件第三方库使用

    3.4K50
    领券