如何以编程方式设置WPF网格单元格的高度(以*为单位)?

时间:2014-01-13 23:25:13

标签: c# .net wpf silverlight windows-phone-7

我必须根据List或ObservableCollection中的值以编程方式设置WPF Grid内的CELL高度。请注意,我想设置CELL的高度而不是ROW。

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

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

2 个答案:

答案 0 :(得分:0)

这没有任何意义。你怎么能有一个高度不同于行的单元格?那是行不通的。

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

答案 1 :(得分:0)

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

第二件事是,没有单元格,想象网格作为二维数组 - 你只能设置内容 - 如果内容溢出有两种可能的方式 - 单元格内容将被切断或RowHeight将基于增加连续的最高内容 - 与列相同。

也许如果您向我们提供您填写表格的图形示例,以及为什么单元格的高度会增加,我们会帮助您找到合适的解决方案。

但是现在,你走错路了......