0

我正在尝试使用以下代码自动调整 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;
            }
        }
    }

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

4

1 回答 1

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;
        }
    }
}
于 2010-12-09T01:36:36.200 回答