Tag: wpfdatagrid

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

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

双击datagrid时出现问题

我在C#代码中的数据网格上有以下内容: 除非用户首先选择行(单击)然后尝试双击该行,否则它大部分都有效。 在这种情况下,CmdTransUnitFillerRowDblClick代码永远不会被触发进行处理。 那么,当行已被选中时,如何在双击时正确触发CmdTransUnitFillerRowDblClick? 有人可能会问: private void ExecutecmdTransUnitFillerRowDblClick(object parameter) { if (DgTransUnitFillerSelectedItem != null) TransUnitFillerDoubleClick(DgTransUnitFillerSelectedItem.CollectionRowId); }

列在wpf datagrid中resize

我目前正在开发WPF软件。 我正在使用WPF,并尝试允许列自动resize以适应数据网格。 我使用了columnwidth =“*”,只要窗口没有包含在scrollview中,它就能正常工作。 如果它处于滚动视图中,则列resize非常大,这会导致数据网格从屏幕边缘调整得更宽,从而导致大量滚动。 感谢您的任何帮助,您可以提供。

No Parameters传递给自定义DataTemplateSelector的SelectTemplate()。 为什么?

我正在使用CellTemplateSelector有条件地在DataGrid列中显示复选标记。 调用我的DataTemplateSelector类的方法SelectTemplate(object item, DependencyObject container) ,但参数项为null而不是预期的DataRowView -object。 这是XAML代码。 DataGrid的Property ItemsSource的项目是一个DataTable ,适用于其他列。 ( 我使用Visual Studio Express 2010 ) … … … 任何帮助表示赞赏。 提前致谢。

DataGridComboBoxColumn用于不同行的不同ItemsSource

这里提出类似于我的问题的问题,但我没有在那里找到解决方案。 我的问题:如何将不同数据(比如Lists)绑定到不同行中每个ComboBox的“DataGridComboBoxColumn”。 这是我试过的代码 XAML: 的.cs using System.Collections.ObjectModel; // For ObservableCollection public partial class MainWindow : Window { ObservableCollection listTeachersSix = null; ObservableCollection listTeachersSeven = null; ObservableCollection listTeachersEight = null; ObservableCollection listTeachersNine = null; ObservableCollection listTeachersTen = null; ObservableCollection listSubjects = null; ObservableCollection listPeriods = null; public MainWindow() { InitializeComponent(); listTeachersSix = new ObservableCollection(); listTeachersSeven = […]

取消选择RowDetailsTemplate后调整Datagrid高度

我正在使用RowDetailsTemplate显示行的嵌套数据网格。 现在,当我选择一行来显示这个嵌套的datagrid时,datagrid的高度会扩展。 但是当取消选择行时,它不会降低其高度。 在折叠行详细信息后,有没有办法将数据网格大小调整为原始高度? 是否有可能以声明方式进行?

清除排序说明后如何删除wpf网格排序箭头

我单击网格标题对列进行排序,然后单击“重置”按钮以通过其集合视图清除排序描述。 但排序箭头图标仍然存在于标题中。 如何删除它?

WPF Datagrid:清除列排序

我在我的应用程序中使用WPF Datagrid,可以通过单击标题对列进行排序。 我想知道是否有任何方法可以以编程方式清除列的排序? 我尝试对列进行排序,然后清除MyDataGrid.Items.SortDescriptions ,但该集合为空(即使已对一列进行了排序)。 我也尝试过: MyDataGridColumn.SortDirection = null; 问题是列指示消失了,但是在编辑单元格和切换行时仍然会发生排序。 有没有办法清除列的排序? 编辑(为清晰起见):问题是如果用户重新点击相同的列标题,我想再次允许排序,因此将CanUserSort设置为false会有问题,即使它是在XAML中完成的。 简而言之,我正在尝试做的是,一旦已排序的列具有已修改的单元格,就会阻止对行进行排序。 我想强制用户重新点击标题。

如何在wpf datagrid中删除所选行(使用复选框)

我的WPF DataGrid是: 另外Dynamicaly我正在将数据填充到datgrid。在xaml.cs文件中,我编写了下面给出的代码,用于从数据网格中删除所选行但是它在行中抛出错误 DataGridRow item =(DataGridRow) datagrid1.ItemContainerGenerator.ContainerFromItem(datagrid1.Items[j]); 所以请查看下面给出的代码,我为此做了同样的代码。 private void Button_Click_1(object sender, RoutedEventArgs e) { for (int j = 0; j < datagrid1.Items.Count; j++) { DataGridRow item =(DataGridRow) datagrid1.ItemContainerGenerator.ContainerFromItem(datagrid1.Items[j]); CheckBox ckb = (CheckBox)GetVisualChild(item); if (ckb.IsChecked.Value) { DataRowView drv = (DataRowView)datagrid1.Items[j]; //delete the row- updating to the database } } } static T GetVisualChild(Visual parent) where […]

如何在WPF中滚动保留DataGrid组头?

当DataGrid中填充了许多条目以便显示垂直滚动条时,我不希望DataGrid滚动查看器隐藏组头。 相反,我希望每个组都有一个ScrollBar 。 在我的情况下,总会有两(2)组,因此将有0-2个滚动条。 这是一个简约的示例代码: http : //www.wpftutorial.net/datagrid.html#grouping Customers = new ListCollectionView(_customers); Customers.GroupDescriptions.Add(new PropertyGroupDescription(“Gender”)); XAML: 即使在那个基本示例中也会出现问题。 我想我需要在某个地方使用ScrollViewer ?