Как получить ширину внутреннего вида WPF DataGrid? - PullRequest
0 голосов
/ 03 января 2011

Допустим, у вас есть DataGrid (стандартная) с шириной = 100 пикселей, но у вас есть такие широкие столбцы (и так много), что вам нужно прокручивать DataGrid горизонтально (весь DataGrid, а не отдельные столбцы), чтобы прочитать содержимое.

+--------+ 
|very lon|
|<#=====>|
+--------+

Надеюсь, вы получите картину.Хорошо, как я уже сказал, ширина DataGrid составляет 100 пикселей, но как получить ширину просмотра DataGrid - очевидно, она больше, чем DataGrid?

Редактировать 1

Я просмотрел визуальное дерево DataGrid, чтобы получить его из ScrollViewer.Далее я прочитал ExtentWidth - это значение, однако, слишком мало.Если я добавлю RowHeaderActualWidth of DataGrid, то сумма будет слишком большой.Таким образом, должен существовать другой фактор (или совершенно лучший, более надежный способ считывания внутренней ширины представления DataGrid).

Ответы [ 3 ]

1 голос
/ 17 июня 2011

Я не знаю, если уже слишком поздно, чтобы ответить, но для общего знания вы можете получить его с помощью

//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);
1 голос
/ 03 января 2011

В данный момент у меня нет версии 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);
}
0 голосов
/ 15 июня 2015

В Xaml вы можете просто использовать, например,

Width="{Binding ElementName=DatagridName, Path=CellsPanelActualWidth}" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...