当前位置:  开发笔记 > 编程语言 > 正文

WPF DataGrid同步列宽度

如何解决《WPFDataGrid同步列宽度》经验,为你挑选了2个好方法。

我有两个WPF工具包DataGrids,我希望当用户调整第一个网格中第一列的大小时,它会调整第二个网格中第一列的大小.我已经尝试DataGridColumn将第二个网格中的宽度绑定到第一个网格中的相应列,但它不起作用.我更喜欢使用所有xaml,但我也可以使用后面的代码.


    
        
    


    
        
    

我也试过绑定Width而不是ActualWidth,但都不起作用.

任何帮助是极大的赞赏.



1> viggity..:

好吧,我不认为使用直接XAML是可能的,但我仍然觉得它应该是因为DataGridColumn它来源于DependencyObject.我确实找到了一种以编程方式进行编程的方法.我并不为此感到兴奋,但它有效:

DataGridColumn.WidthProperty.AddValueChanged(upperCol, delegate
{
    if (changing) return;
    changing = true;
    mainCol.Width = upperCol.Width;
    changing = false;
});
DataGridColumn.WidthProperty.AddValueChanged(mainCol, delegate 
{ 
    if (changing) return;
    changing = true;
    upperCol.Width = mainCol.Width; 
    changing = false; 
});

public static void AddValueChanged(this DependencyProperty property, object sourceObject, EventHandler handler)
{
    DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty(property, property.OwnerType);
    dpd.AddValueChanged(sourceObject, handler);
}



2> 小智..:

您可以使用该DataGrid LayoutUpdated方法来操纵有关列宽的其他对象.

private void dataGrid1_LayoutUpdated(object sender, EventArgs e)
{
    for(int i = 0 ; i < dataGrid1.Columns.Count && i < dataGrid2.Columns.Count ; ++i)
        dataGrid2.Columns[i].Width = dataGrid1.Columns[i].ActualWidth;
}

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有