【发布时间】:2009-12-10 08:41:15
【问题描述】:
有谁知道,当用户更改 WPF DevExpress 网格的列宽时,会引发哪个事件?我想用它来存储数据库中的列宽。
【问题讨论】:
标签: wpf grid devexpress
有谁知道,当用户更改 WPF DevExpress 网格的列宽时,会引发哪个事件?我想用它来存储数据库中的列宽。
【问题讨论】:
标签: wpf grid devexpress
您可以通过事件 View.LostFocus 存储列宽:
DevExpress.Xpf.Grid.GridControl grc = new DevExpress.Xpf.Grid.GridControl(); grc.View.LostFocus += View_LostFocus;
和处理程序:
void View_LostFocus(object sender, RoutedEventArgs e)
{
TableView tv = sender as TableView;
GridColumn[] gcs = tv.VisibleColumns.ToArray();
foreach (GridColumn gc in gcs)
{
if (gc.ActualHeaderWidth != gc.Width)
{
double newWidth = gc.ActualHeaderWidth; //Do something with new width
}
}
}
【讨论】:
我也必须这样做,但对于 silverlight 网格。我能得到的最好的方法是处理 Grid.LayoutUpdated 事件,并枚举列以获取它们的宽度。我什至无法绑定到 silverlight 网格中的列宽属性,因为它不是依赖属性,WPF 网格很可能完全相同。
编辑: 您可以做的是检查 WPF 网格的源代码,然后自己添加一个 ColumnResized 事件。这并不理想,因为每次安装 DevExpress 更新时都必须重新集成代码,然后重建网格。您还需要小心如何执行此操作,例如,您需要找出确定列大小调整何时完成的最佳方法,这样您就不会持续触发事件。或者您可以四处寻找功能更全面(更成熟)的网格?
【讨论】:
DataGridColumnHeader 公开了一个 SizeChanged 事件,该事件将 SizeChangedEventArgs 对象传递给您,其中公开了许多有用的 Sizes 信息!
【讨论】: