假设您有宽度= 100像素的DataGrid(标准),但是您有如此宽的列(以及许多),您必须水平滚动DataGrid(整个DataGrid,而不是单个列)才能读取内容。
+--------+
|very lon|
|<#=====>|
+--------+
我希望你能得到这张照片。好吧,正如我所说,DataGrid宽度为100像素,但如何获取DataGrid的视图宽度 - 显然它比DataGrid大?
我遍历了DataGrid的可视树以获取它的ScrollViewer。接下来我读了ExtentWidth - 但是这个值太小了。如果我添加DataGrid的RowHeaderActualWidth,另一方面总和太大了。因此,必须有另一个因素(或者更完整,更可靠,更方便地读取DataGrid视图的内部宽度)。
答案 0 :(得分:1)
目前我还没有4.0可用,但我猜你可以这样做:
private Double GetGridWidth(DataGrid grid)
{
Double width = 0.0;
foreach (DataGridColumn column in myDataGrid.Columns)
{
width += column.ActualWidth;
}
return width;
}
或使用LINQ:
private Double GetGridWidth(DataGrid grid)
{
return grid.Columns.Sum(col => col.ActualWidth);
}
答案 1 :(得分:1)
我不知道回答是否为时已晚,但是对于一般知识,你可以通过
获得它//in your class declaration
DataGrid gridInstance;
//in your method
Type type = typeof(DataGrid);
PropertyInfo pInfo = type.GetProperty("CellsPanelActualWidth", BindingFlags.NonPublic | BindingFlags.Instance);
double actualWpfWidth = (double)pInfo.GetValue(gridInstance, null);
答案 2 :(得分:0)
在Xaml中你可以使用,例如
class SubClass <E, K extends Collection<E>, V> implements Map<K, V>