我使用此方法調整ListView的大小,將其列調整到每個需要的空間並將剩餘空間添加到第二列,以便不出現水平滾動條。ListView - 計數實際可用區域
private void SetColumnWidths(object sender)
{
ListView listView = (sender as ListView);
if (listView != null)
if (listView.IsLoaded)
{
listView.UpdateLayout();
GridView gridView = listView.View as GridView;
if (gridView != null)
{
UpdateColumnWidths(gridView);
listView.UpdateLayout();
Decorator border = VisualTreeHelper.GetChild(listView, 0) as Decorator;
if (border != null)
{
ScrollViewer scroller = border.Child as ScrollViewer;
if (scroller != null)
{
ItemsPresenter presenter = scroller.Content as ItemsPresenter;
if (presenter != null)
{
double columnWidth = presenter.ActualWidth - 2;
for (int i = 0; i < gridView.Columns.Count; i++)
{
if (i != 1)
columnWidth -= gridView.Columns[i].ActualWidth;
}
if (columnWidth < 0)
columnWidth = 0;
gridView.Columns[1].Width = columnWidth;
}
}
}
}
}
}
private void UpdateColumnWidths(GridView gridView)
{
foreach (var column in gridView.Columns)
{
if (double.IsNaN(column.Width))
{
column.Width = 0;
column.Width = double.NaN;
}
}
}
一切工作就好了......直到BorderThickness
來到城裏,無論是對ListView控件甚至最差的ListViewItem的模板。我希望你能幫我的是我如何檢索ListViewItem的模板BorderThickness
,以便在不包含它的情況下開始調整大小過程。
或者甚至更好,你有什麼其他的想法,我怎麼可以找出ListView的實際可用區域,沒有邊框,滾動條,鼠標,貓,狗等?
預先感謝您!
GridViewColumn不支持*作爲寬度...至少在我使用的.net 3.5中。這在.Net 4中改變了嗎? – Dummy01
@ Dummy01哇我從來沒有意識到*在GridViewColumns中不被支持......我一直使用DataGrid!如果您有興趣,可以在此網站上發佈兩種解決方法:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/76b01ab0-df02-41eb-a040-8b985c463681/ – Rachel