我正在尝试使用以下代码自动调整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;
}
}
}
有谁知道如何解决这个问题?
答案 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;
}
}
}