Tag: datagrid

在System.Windows.Forms.DataGrid中双击单元格时,不会触发MouseDoubleClick事件

我需要处理在ReadOnly DataGrid中双击单元格时(不幸的是不是DataGridView),但是没有触发MouseDoubleClick事件。 如何让事件发生火灾? 我正在创建DataGrid并订阅该事件: var table = new DataTable(); table.Columns.Add(“foo”); table.Rows.Add(new object[] { “foo” }); table.Rows.Add(new object[] { “foo” }); dataGrid1.DataSource = table; dataGrid1.MouseDoubleClick += DataGrid1_MouseDoubleClick; dataGrid1.ReadOnly = true; 只有当我双击单元格之间的边界时才会发生此事件。 当我单击一个单元格时,会出现一个ReadOnly文本框,它似乎吃掉了第二次单击事件: 我在专家交流中找到了一个旧线程 ,他们在那里说了很多: 好吧,不仅在单击一个单元格时没有捕获双击事件,它还没有被datagrid消息队列捕获。 我inheritance了一个数据网格并覆盖了wndproc,检查我是否能检测到双击。 它捕获单击消息,但没有WM_LBUTTONDBLCLK消息通过。 我怀疑MS具有子单元格控件(请参阅DataGridColumnStyle类和派生类)挂钩网格控件并防止消息甚至继续到网格。 试图预先挂钩那个孩子或网格可能会产生相当混乱的结果,所以我避免这样做。 我真的不需要TextBox控件,所以如果有办法抑制单元格“激活”或显示它,那对我来说这也是一个很好的解决方案。 注意:我知道DataGrid已经过时,但我正在处理遗留代码,请不要评论告诉我使用DataGridView – 它对我没有帮助。

如何使用RelativeSource Binding创建DataGrid绑定到Model和ViewModel?

我有一个DataGrid,它有一个DataGridTemplateColumn,它使用DataGrid的ItemsSource绑定,但是在DataGridTemplateColumn的ComboBox中,我希望能够绑定到View的ViewModel而不是ItemsSource。 ViewModel具有ModelValues属性以及myList属性。 ModelValues用于DataGrid的ItemsSource ,我想将myList用于ComboBox ItemsSource 。 我如何更改我的RelativeSource命令以便它可以工作?

如何懒惰评估wpf:DataGrid,仅在需要时检索数据

我有一个WPF数据网格,绑定到一个由数据库中的linq-to-sql填充的列表。 绑定是双向的,允许用户更改每行中的值 当显示大约20000行时,程序在列表初始化期间因内存不足exception而崩溃。 即使行数较少,性能也会变得难以忍受。 我知道在初始化时,datagrid遍历每一行来测量最大列宽和其他属性。 对于所有行,它显然会这样做,无论它们是否在屏幕上。 我尝试将datagrid绑定到myQuery.ToList() (以允许通过单击列对数据网格进行排序)或直接绑定到IQueryable。 (排序不适用于此) 两者都产生相同的结果。 仅具有20000个项目的ToList()不会导致大量内存消耗,只有当它绑定到数据网格时才会发生这种情况。 忽略数据网格中20000行有用的问题(这些是当前的要求;更改那些工作示例会有所帮助)。 什么是懒惰加载当前显示在屏幕上的数据的最简单方法,并忽略其他所有内容,直到它滚动到视图中? 这可以在没有第三方库和主要代码更改的情况下完成吗? 如果没有,推荐的解决方法是什么?

如何在水平滚动条可见时修复DataGrid中Column的宽度?

我像这样使用带有datagrid的复杂头。 但是我遇到了滚动条可见性的问题,它也占用了一个空间,因此宽度不能与网格完美匹配。 我的网格就像 … till column 29 Anda我有像这样的Column.Definition数据网格 …. till column29 结果仍然是这样的: 如何解决列的匹配宽度与scollbar可见这样? UPDATE 尽管我设置了宽度,它仍然保留了空间。 更新2 我不知道滚动条成功resize但空间仍然存在

ScrollViewer上的DataGrids阻​​止它滚动

我有多个DataGrids放置在ScrollViewer上。 这些DataGrids具有“height:auto”属性,因此我可以隐藏滚动条并查看所有内容。 唯一的问题是DataGrids占据了焦点,因此我无法滚动ScrollViewer。 这是一个属性,以保持对ScrollViewer的关注,但也保持DataGrids的行为(所以我可以选择元素)? 谢谢 !

在特定的tresshold下调整wpf控件时不受欢迎的剪辑

在WPF中开发自定义控件时,我发现了一种奇怪的剪切行为。 当我在一定的最小边界/ tress-hold下调整控件的大小时,它决定剪切控件的前24个像素,原因我不明白。 如果有人能够解释如何在没有剪切行为的情况下实现所需的图形效果,将会非常感激。 使用以下XAML会发生此行为。 请注意,XAML是一个精简版,使其符合标准的.net 4.0控件。

如何将按钮附加到datagrid的结尾? (WPF,C#)

我有一个带有n行的DataGrid 。 当用户到达DataGrid的末尾时,应该有一个按钮来加载更多行(就像你从一些网站知道的那样)。 如何定位始终位于DataGrid末尾的按钮? 我正在使用C#和WPF

WPF DataGrid删除SelectedItems

最近我一直在研究一个将数据programmicaly导入WPF DataGrid的项目。 我差不多完成了这个项目,但是我遗漏的东西是一个删除选定单元格的按钮,这就是我被困住的地方! 我使用DataGrids的基本知识编写了这段代码: var grid = dataGrid1; if (grid.SelectedIndex >= 0) { for (int i = 0; i <= grid.SelectedItems.Count; i++) { grid.Items.Remove(grid.SelectedItems[i]); }; } 只删除像CurrentItem一样选择的项目,但它不会删除超过2个选定的项目! 我拥有的DataGrid至少应包含至少100个项目。 我添加了一个删除所有选项,但这也是必要的。 如果有人给我解决方案,我会感激不尽。

将ObservableCollection绑定到MVVM中的DataGrid

我有一个DataGrid,我绑定到我的视图模型中的ObservableCollection,我需要能够在DataGrid排序时对集合进行排序,以便我可以在其他地方使用此排序顺序。 我目前正在使用ObvservableCollection上的包装器来支持排序。 对DataGrid进行排序时,它只对显示的数据进行排序,而不对集合中的基础数据进行排序。 数据由一个整数列和一个字符串列组成,需要在两者上支持升序和降序排序。 我还希望保持与标准DataGrid排序相同的用法,您可以在其中单击列标题并在升序和降序排序之间切换。 我对WPF比较陌生,所以我不知道数据和命令绑定的所有细节,但我认为有一种方法可以实现我想做的事情。 这是一个示例xaml来说明我的视图设置。 源数据的类型如下: public class myType { public int firstValue { get; set; } public string secondValue { get; set; } // some functions and variables… } 现在,就像我上面所说的,我需要按照排序顺序访问集合中的项目,但它不需要特别是ObservableCollection。 只要我可以在我访问它们时按当前顺序迭代集合中的项目,一切都很好。 我想的可能是ListCollectionView或其他东西。 当新项目添加到集合中时,我也不希望集合重新排序。 任何新项目都应该像通常会发生的那样添加到集合的末尾。 有任何想法吗?

降低绑定DataGrid的刷新率

我的WPF / C#应用程序中有一个绑定到Entity Framework集合的DataGrid。 每行都有非常频繁更改的绑定列 – 每秒多次。 这导致列基本上不可读,因为它经常变化。 如何强制WPF每隔0.5秒或1秒仅显示一个新值,即使该值每隔0.1秒更改一次? 例如 dataGrid.MaxRefreshRate = 1000; (value in milliseconds).