WPF c# datagrid 设置单独行高

问题描述 投票:0回答:3

我对 WPF 和 C# 还很陌生。 我正在尝试创建一个数据网格,我可以在其中以编程方式设置各行的高度。

似乎可以一起更改所有行的高度,但我希望各行具有不同的高度。

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

c# wpf datagrid
3个回答
3
投票

最简单的事情可能是在 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
投票

EK鲁格,

非常感谢您的回复。

但是,您的技术仅在创建数据网格时才会发生。 我需要一些可以在不同时间调用的东西,以便我可以定期调整行大小。

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

干杯。

  • 马特

    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;
        }
    }
    

0
投票

使用数据触发器。下面的代码在 Height="Auto" 和 Height="*" 之间切换。重要的是,高度不是在 RowDefinition 中设置,而是在样式中设置。

        <RowDefinition>
            <RowDefinition.Style>
                <Style TargetType="RowDefinition">
                    <Setter Property="Height" Value="Auto" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding MyFlag}" Value="True">
                            <Setter Property="Height" Value="*" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </RowDefinition.Style>
© www.soinside.com 2019 - 2024. All rights reserved.