在WPF TreeListView中自动调整列大小

时间:2010-12-07 05:47:27

标签: wpf c#-4.0 resize treelistview

我正在尝试使用以下代码自动调整WPF TreeListView(http://www.codeproject.com/KB/WPF/wpf_treelistview_control.aspx)的列:

    public void AutoResizeColumns()
    {
        GridView gv = this.View as GridView;

        if (gv != null)
        {
            foreach (GridViewColumn gvc in gv.Columns)
            {

                if (double.IsNaN(gvc.Width))
                    gvc.Width = gvc.ActualWidth;

                gvc.Width = double.NaN;
            }
        }
    }

但是当我调整它的大小时,列宽不考虑行的边距,并且单词被10px切断,然后如果我双击列,它将调整大小而不会切断单词。

我也试过这个没有运气:

    public void AutoResizeColumns()
    {
        GridView gv = this.View as GridView;

        if (gv != null)
        {
            foreach (GridViewColumn gvc in gv.Columns)
            {

                gvc.Width = gvc.ActualWidth + 10;
            }
        }
    }

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

经过几个小时的尝试来解决这个问题,我终于明白了。 Width列被设置为ActualWidth,它小于它应该是的,所以如果我将列Width设置为double.MaxValue,那么当它设置为double.NaN时,它将调整为“实际”实际宽度。

以下是代码:

public void AutoResizeColumns()
{
    GridView gv = this.View as GridView;

    if (gv != null)
    {
        foreach (GridViewColumn gvc in gv.Columns)
        {
            // Set width to highest possible value
            gvc.Width = double.MaxValue;

            // Set to NaN to get the "real" actual width
            gvc.Width = double.NaN;
        }
    }
}