【发布时间】:2014-01-13 23:25:12
【问题描述】:
我必须根据 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);
【问题讨论】:
-
你试过什么?您能否发布一些有关如何生成网格的代码?
-
@tencntraze 我已经生成了网格,如下面的示例所示。在问题中添加了代码。 msdn.microsoft.com/en-us/library/…
-
不要在过程代码中创建或操作 UI 元素。这就是 XAML 的用途。使用
ItemsControl。 -
@HighCore 我需要根据用户输入动态创建行和列。我应该在哪里写上面的代码?在 ViewModel 或代码文件中?我正在使用 PRISM 架构。
-
@HighCore BTW 它是一个有 50 行和 20 列的大网格
标签: c# .net wpf silverlight windows-phone-7