在WPF TreeListView中自动调整列大小
我正在尝试自动调整WPF TreeListView列的大小http://www.codeproject.com/KB/WPF/wpf_treelistview_control.aspx 使用此代码:在WPF TreeListView中自动调整列大小,wpf,c#-4.0,resize,treelistview,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 (GridVie
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;
}
}
}
有人知道如何解决这个问题吗?经过几个小时的努力,我终于找到了答案。列宽被设置为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;
}
}
}