C# 如何通过编程设置WPF网格单元的高度(以*的倍数为单位)?

C# 如何通过编程设置WPF网格单元的高度(以*的倍数为单位)?,c#,.net,wpf,silverlight,windows-phone-7,C#,.net,Wpf,Silverlight,Windows Phone 7,我必须根据列表或ObservableCollection中的值,以编程方式设置WPF网格中单元格的高度。请注意,我要设置单元格的高度,而不是行的高度 请注意,网格是以编程方式生成的 Grid myGrid = new Grid(); ColumnDefinition colDef1 = new ColumnDefinition(); ColumnDefinition colDef2 = new ColumnDefinition(); ColumnDefinition colDef3 = new

我必须根据列表或ObservableCollection中的值,以编程方式设置WPF网格中单元格的高度。请注意,我要设置单元格的高度,而不是行的高度

请注意,网格是以编程方式生成的

Grid myGrid = new Grid();

ColumnDefinition colDef1 = new ColumnDefinition();
ColumnDefinition colDef2 = new ColumnDefinition();
ColumnDefinition colDef3 = new ColumnDefinition();
myGrid.ColumnDefinitions.Add(colDef1);
myGrid.ColumnDefinitions.Add(colDef2);
myGrid.ColumnDefinitions.Add(colDef3);

// Define the Rows
RowDefinition rowDef1 = new RowDefinition();
RowDefinition rowDef2 = new RowDefinition();
RowDefinition rowDef3 = new RowDefinition();
RowDefinition rowDef4 = new RowDefinition();
myGrid.RowDefinitions.Add(rowDef1);
myGrid.RowDefinitions.Add(rowDef2);
myGrid.RowDefinitions.Add(rowDef3);
myGrid.RowDefinitions.Add(rowDef4);
网格的每个单元格都包含文本框或边框,如下所示

            ColumnDefinition column = new ColumnDefinition();
            myGrid.ColumnDefinitions.Add(column);
            Border b = new Border();
            b.BorderBrush = Brushes.Black;
            b.BorderThickness = new Thickness(2);
            b.Padding = new Thickness(10);
            TextBlock txt3 = new TextBlock();
            txt3.Text = "Hello";
            txt3.FontSize = 12;
            txt3.FontWeight = FontWeights.Bold;
            txt3.TextWrapping = TextWrapping.Wrap;
            txt3.Margin = new Thickness(2);


            Grid.SetColumn(txt3,2);                            
            b.Child = txt3;
            //Grid.SetColumn(txt3, 2);                
            //Grid.SetRowSpan (txt3,2);
            //myGrid.Children.Add(txt3);
            Grid.SetColumn(b, 2);
            Grid.SetRowSpan(b, 2);               
            myGrid.Children.Add(b);

这毫无意义。你怎么会有一个与行不同高度的单元格?那是行不通的


您只需在RowDefinition上为该单元格的行设置高度。

首先您必须注意,将单元格高度设置为大于行,将导致单元格被截断

第二件事是,没有单元格,将网格想象成一个二维数组-您可以只设置内容-如果内容溢出,有两种可能的方式-单元格的内容将被切断或行高将根据行中最高的内容增加-列也是如此

如果您能提供一个图形示例,说明您在表格中填写的内容,以及为什么单元格的高度会增加,我们可能会帮助您找到合适的解决方案


但是现在,你走错了方向……

你试过什么?你能发布一些关于如何生成网格的代码吗?@tencntraze我已经生成了网格,如下面的示例所示。在问题中添加了代码。不要在过程代码中创建或操作UI元素。这就是XAML的用途。使用
ItemsControl
@HighCore我需要根据用户输入动态创建行和列。我应该在哪里写上面的代码?在ViewModel或代码文件中?我使用的是棱镜结构。@HighCore顺便说一句,它是一个50行20列的大网格