WPF DataGrid 遇到的小问题

C#winform 用DataGridView显示大量图片 最近在做项目时,有个需求是在winform上面显示大量的小图片,查了下资料,可以用listview显示,我试了下,发现的确能显示,可是我想知道每张图片的位置时,就很困难,我本来就是个新手,可能存在很简单的办法解决这个问题,只是我不知道。然后我又查了说DataGridView能显示,试了下果然满足我的需求,废话不多说,马上上干货。我是用imagelist控件来管理图片,这个控件在winform那里直... 阅读详情

WPF DataGrid 遇到的小问题

        1) 在使用WPF的DataGrid时,虽然在绑定数据时使用的mode是twoway,

但在具体使用的时候,因为界面输入过快,数据的传输具有一定的延迟。
这样会有时导致异常的出现,解决这个办法我们可以自己调用函数datagrid.commiteEdit();
来手动传输数据。
        2)在输入数据后,界面没有及时的更新某些信息,如行数,以及在删除某行后,
行数没有重新排列。只要使用datagir.Items.Refresh();  就可以使得界面刷新。

       3)获得DataGrid中的某一行或者某一个单元格


        #region DataGrid Cell Row

        /// <summary>
        /// get the row of datagrid
        /// </summary>
        /// <param name="Index"></param>  [0,n-1]
        /// <returns>DataGridRow</returns> 
        private DataGridRow getRow(int Index)
        {
            try
            {
                DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(Index);
                if (row == null)
                {
                    dataGrid.UpdateLayout();
                    dataGrid.ScrollIntoView(dataGrid.Items[Index]);
                    row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(Index);
                }
                return row;
            }
            catch (Exception ex)
            {
                log.Error("getRow()----- exception occurred," + ex.Message);
                return null;
            }
        }
 
        /// <summary>
        /// get the cell of dataGrid by an existing row
        /// </summary>
        /// <param name="rowIndex"></param>  [0,n-1]
        /// <param name="columnIndex"></param>  [0,n-1]
        /// <returns>DataGridCell</returns>
        private DataGridCell getCell(int rowIndex, int columnIndex)
        {
            try
            {
                DataGridRow rowContainer = getRow(rowIndex);
               
                if (rowContainer != null)
                {
                    DataGridCellsPresenter presenter = getVisualChild<DataGridCellsPresenter>(rowContainer);
                    
                    if (presenter == null)
                    {
                        dataGrid.ScrollIntoView(rowContainer, dataGrid.Columns[columnIndex]);
                        presenter = getVisualChild<DataGridCellsPresenter>(rowContainer);
                    }
                    
                    DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);
                    if (cell == null)
                    {
                        dataGrid.ScrollIntoView(rowContainer, dataGrid.Columns[columnIndex]);
                        cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);
                    }

                    return cell;
                } // end of if (rowContainer != null)

            }
            catch (Exception ex)
            {
                log.Error("getCell()---- exception occurred, " + ex.Message);
            }
            return null;
        }

        /// <summary>
        /// get the visual child
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="parent"></param>
        /// <returns></returns>
        private static T getVisualChild<T>(Visual parent) where T : Visual
        {
            try
            {
                T child = default(T);
                int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
                for (int i = 0; i < numVisuals; i++)
                {
                    Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
                    child = v as T;
                    if (child == null)
                    {
                        child = getVisualChild<T>(v);
                    }
                    if (child != null)
                    {
                        break;
                    }
                }
                return child;
            }
            catch (Exception ex)
            {
                log.Error("getVisualChild()---- exception occurred, " + ex.Message);
                return null;
            }
        }

        #endregion


WPF DataGrid频繁点击崩溃问题 1.剪切板错误异常(目前我遇到的情况) 解决方式:设置DataGrid下ClipboardCopyMode属性为None,关闭剪切板,默认是开始复制不包含标题的模式“ExcludeHeader”,还有一种包含标题模式:IncludeHeader 2.IsReadOnly=false,情况下点击报错崩溃 解决方式部分代码:Unloaded、PreviewMouseDown 事件验证编辑模式问题 private void ShowParamerDataGrid_Unloaded(ob 阅读详情

相关推荐

数据库读取二进制图片显示

数据库读取二进制图片显示。。。。。。。提供大家学习学习

WPF使用Image控件图片无法显示的解决方法

前辈们在网上有类似的解答,但作为刚学WPF的菜鸟没看懂啊。。。所以这是我自己花了2个小时乱弄摸索出来的,就打上了原创嘻嘻。

Fernweh_xy的博客 5272

【分子指纹】化学分子指纹的概念和应用(非常重要)

分子指纹(Molecular fingerprints)可以低计算成本的方式表示大规模化学数据集中化合物的化学(结构、物理化学等)性质。它们在将化学数据集中的分子转换为适合于计算方法的一致输入格式(bit向量或数值)方面发挥着重要作用。在这篇综述中,

DJJ5210的博客 1万+

wpf中的datagrid中如何显示图片

wpf中的datagrid中如何显示图片 2012-11-28 09:41 by swarb, ... 阅读, ... 评论, 收藏, 编辑 2012-09-11 10:55   在datagrid中添加一个模板列,xaml内容如下: &lt;DataGridTemplateColumn ...

Swarb的博客:低头做事,抬头做人 869

Snort源代码编译 _ 采坑之旅(for Windows VS2015)

    系统环境:Windows7 sp1 x64     编译环境:VS2015 SP1     Snort版本:2.9.12     daq版本:2.0.6     Snort官网:https://www.snort.org/downloads#snort-downloads 背景     最近需要实现一个类似网络防火墙的产品,主要参考Snort源码,先花了点时间简单读了下网上比较流行的《...

magictong的专栏 8888

NMS非极大值抑制算法原理

NMS非极大值抑制算法

pywin 3500

WPF DataGrid不显示单元格内容的原因及解决方法

本文来源: qq_41441897:WPF DataGrid 列名包含敏感字符的解决方法 当使用DataGrid进行数据绑定的时候,如果后台绑定的DataTable的列名中含有特殊标点, 例如 . \ \ / [ ] ( ) 等 则会导致该列所有数据都无法显示,但确实是有值,可以通过排序发现单元格中值存在 PS:数据库安排就不该搞这些特殊符号,但没办法,碍于项目需要显示这些东西。。。 解决方案:...

Zeeno的学习博客 3094

基于Simulink的无线充电系统LCC补偿网络建模与控制

本文详细介绍了基于Simulink的无线充电系统LCC补偿网络建模与控制方法。首先分析了无线充电系统面临的核心挑战,提出LCC补偿网络解决方案,阐述了其恒流输出和输入阻抗解耦原理。通过Simulink分步演示了系统建模过程,包括松耦合变压器、LCC+LC补偿网络、功率变换级搭建以及频率跟踪控制实现。仿真结果表明,LCC补偿系统在气隙变化和负载跳变下能保持输出电压稳定(波动±3%),效率达89%。文章还总结了工程实现要点,并探讨了动态充电、多负载系统等扩展应用。该教程为开发高效智能的无线充电系统提供了实用指导

amy_mhd的博客 62

WPF DataGrid刷新问题

WPF DataGrid数据刷新

yourname0215的博客 2895

【webrtc】openh264编码:动态配置码控参数触发IDR编码

SetRates 下发RateControlParameters 给到openh264 编码器 void SetRates(const RateControlParameters& parameters) override; LayerConfig 编码器这边的配置是layerconfig,具体到层的: std::vector<LayerConfig> configurations_; void H264EncoderImpl::SetRates(const RateCo.

突围 723

分区补光与ISP图像调节技术

在安防监控场景中,逆光、强光、明暗不均(如门口 / 窗边的 “阴阳脸” 画面)是导致图像细节丢失的核心问题。分区补光技术通过对画面不同亮度区域精准补光,解决 “局部过曝 / 欠曝” 难题;ISP(图像信号处理器)图像调节技术则通过算法优化,提升画面色彩、对比度与细节。二者协同可实现 “硬件补光 + 算法优化” 的双重增强,是低功耗摄像机实现高清画质的关键技术组合。分区补光与 ISP 图像调节技术:原理、协同方案及安防监控应用案例。一、核心技术原理解析。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 729

wpf 中datagrid不显示数据问题

wpf的datagrid中明明绑定了数据源,但是不显示数据,很奇怪。后来发现绑定的数据源中内容必须为属性才能正常显示,字段是不会显示的。 private void LoadTest() { List<testTrain> testLis = new List<testTrain>(); testTrain obj = new testTrain(); obj.cheCi = "1001";

u013220323的专栏 3040

药物对接仿真软件:HADDOCK_(5).HADDOCK中蛋白质-配体对接流程

半柔性能量最小化阶段是在刚体能量最小化的基础上,允许配体的部分柔性,通过优化配体的构象来进一步提高对接的准确性。半柔性能量最小化阶段是在刚体能量最小化的基础上,允许配体的部分柔性,通过优化配体的构象来进一步提高对接的准确性。如果是PDB格式,确保文件包含所有必要的原子信息。对接完成后,HADDOCK会生成一系列的输出文件,包括对接后的蛋白质-配体复合物结构文件、能量评分文件和统计分析文件。对接完成后,HADDOCK会生成一系列的输出文件,包括对接后的蛋白质-配体复合物结构文件、能量评分文件和统计分析文件。

kkchenjj的博客 1081

wpf小技巧——datagrid 滚动条问题

今天在项目中遇到了一个问题,datagrid 不出现滚动条了,拿出来给大家分享下,以作前车之鉴。 很简单的布局代码如下 <Window x:Class="DataGrid_AutoSize.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x...

annle1018的博客 714

LangGraph 实战教程:搭建一个智能办公多Agent协作平台

只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。

SuperAGI2025 221

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WPF中datagrid不显示滚动条问题

WPF中DataGrid是自带滚动条的,当内容显示不下时可以使用滚动条显示。但是,开发中遇到了DataGrid一直不显示滚动条。之前也曾遇到过同类问题,再次经过查找,发现是StackPanel的原因,特此记录。 以下内容原文请参考:http://www.cnblogs.com/lhx880619/archive/2011/12/08/2281420.html 原因也比较简单 就是因为...

dkjh93562的博客 1405

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WPF中DataGrid更改后台数据并更新前台显示的问题

在做项目的时候是用WPF做界面的,其中涉及到了用DataGrid显示数据的功能,要求当在后台对源数据进行修改时,前台的数据显示能自动更新,因为是第一次接触WPF,所以不太会,网上查了很多,都是前台更改数据更新到源数据的,跟我的目标正好相反,自己摸索查资料终于解决了,现在写出来造福大众。前台:&lt;DataGrid x:Name="dataGrid" ItemsSource="{Binding}"...

qq_31494787的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WPF DataGrid 选中行颜色不改变问题

找到一位仁兄写的资料,困扰我好几天的问题z

Danny_Yao的学习笔记 8747

WPF中 DataGrid中DataGridTemplateColumn打开Window的问题

问题重现:1、创建一个WPF项目;2、创建一个Window,添加一个按钮,Click事件中添加如下代码: 3、创建一个DataGrid,使用自定义模板列,DataTemplate中的控件为一个TextBlock,MouseDown事件同样添加以上代码。4、鼠标单击按钮和DataGrid中的TextBlock,发现以下区别:在DataGrid中打开的Window并没有置于最前,而Button中打开的

DC的陋室 2620

wpf小技巧——datagrid 不出现 滚动条问题

添加 ScrollViewer.HorizontalScrollBarVisibility="Visible" 还不显示。

qq_37162746的博客 428

WPF checkbox在datagrid模板中不能双向绑定问题

<DataGridTemplateColumn Header="厚度数据" Width="*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> ...

qq_24391357的博客 2495

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

WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题目录一、触屏事件连带触发鼠标事件的问题二、DataGrid 误触问题及解决方法独立观察员 2021 年 10 月 10 日...

dotNET跨平台 3178

WPF中DataGrid绑定失败问题解决

问题: System.InvalidOperationException:“双向绑定需要 Path 或 XPath。” 原因: 绑定的类中属性没有用get,set public class GeodeticCoordinate { public string Id; public double L { get; set; } public double B { get; set; } } 这是个血泪的教训,加上get和set就没问题了。 还

du12300的博客 1641
上一篇: 在MFC下用托管形式调用WPF
下一篇: 在非托管环境下使用托管环境下的程序集(转)
cool_time
博客等级 码龄19年 2粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值