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

これを理解しようと何時間も試みた後、私はついにそれを手に入れました。列の幅は想定よりも小さいActualWidthに設定されているため、列の幅を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 に答える