DevExpress WPF Grid - 更改列宽时的事件

时间:2009-12-10 08:41:15

标签: wpf grid devexpress

当用户更改WPF DevExpress网格的列宽时,有谁知道引发了哪个事件?我想用它来存储数据库中的列宽。

3 个答案:

答案 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信息!