【问题标题】:How to set height (in multiples of *) of a WPF grid cell programatically?如何以编程方式设置 WPF 网格单元的高度(* 的倍数)?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    首先你要注意,设置单元格高度超过行,会导致单元格被切断。

    第二件事是,没有单元格,将 Grid 想象成一个二维数组 - 你可以只设置内容 - 如果内容溢出有两种可能的方式 - 单元格的内容将被切断或 RowHeight 将基于一行中最高的内容 - 列相同。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 2011-08-22
      相关资源
      最近更新 更多