WPF c#datagrid设置单独的行高

时间:2014-06-20 06:21:28

标签: c# wpf datagrid

我是WPF和C#的新手。 我正在尝试创建一个datagrid,我可以通过编程方式设置各行的高度。

似乎可以将所有行的高度更改为一起,但我希望这些行的高度彼此不同。

有谁知道实现这个目标的方法? (我以为我可以将行高设置为自动,并将一个不可见的TextBox放在一个未使用的列中。我可以通过编程方式更改未使用的TextBox的高度。)

2 个答案:

答案 0 :(得分:2)

最简单的事情可能是在DataGrid.LoadingRow事件中处理这个问题,该事件是在一行被实例化后立即引发的。

为此,只需在xaml代码中为数据网格添加一个事件处理程序:

<DataGrid LoadingRow="DataGrid_LoadingRow"></DataGrid>

并在代码中声明此事件处理程序,以通过Height属性单独管理行高:

private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
    DataGridRow row = e.Row;
    row.Height = 50; //put your height here
}

答案 1 :(得分:0)

EKrueger,

非常感谢您的回复。

然而,您的技术仅在创建数据网格时发生。 我需要一些可以在不同时间调用的东西,所以我可以定期调整行数。

我一直在寻找,这是我找到的解决方案。

干杯。

  • 马特

    private void resizeDataGridRowHeight() {
        int a = boundDataGrid.Items.Count;
        int calibrationRowHeight = 28;
        for (int i = 0; i < a; i++) {
            myRowHeight = ListofObjectsThatEachRepresentAParameter.ListOfDataTableRows[i].ListOfCalibrationRows.Count * calibrationRowHeight;
            DataGridRow row = boundDataGrid.ItemContainerGenerator.ContainerFromIndex(i) as DataGridRow;
            row = boundDataGrid.ItemContainerGenerator.ContainerFromIndex(i) as DataGridRow;
            row.Height = myRowHeight;
        }
    }