当用户更改WPF DevExpress网格的列宽时,有谁知道引发了哪个事件?我想用它来存储数据库中的列宽。
答案 0 :(得分:2)
您可以按事件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
}
}
}
答案 1 :(得分:1)
我必须这样做,但对于银色网格。我能得到的最好的是处理Grid.LayoutUpdated事件,并枚举列以获得它们的宽度。我甚至无法绑定到silverlight网格中的列宽属性,因为它不是依赖属性,WPF网格很可能完全相同。
编辑: 你可以做的是检查WPF网格的源代码,并自己添加ColumnResized事件。这并不理想,因为每次安装DevExpress更新时都必须重新集成代码,然后重建网格。您还需要小心如何执行此操作,例如,您需要找出确定列调整大小何时完成的最佳方法,以便您不会持续触发事件。或者你可以寻找一个功能更全面(更成熟)的网格?
答案 2 :(得分:0)
DataGridColumnHeader公开一个SizeChanged事件,该事件将SizeChangedEventArgs对象传递给您,其中公开了许多有用的Sizes信息!