0

我正在尝试将几个包含不同长度文本的文本块添加到网格视图中。我想调整高度和宽度属性,以便文本块中的文本可见。问题是当程序运行时,所有的文本块项目都具有相同的高度。宽度是我指定的,但高度不是我分配的值。我错过了什么?

GridView grdvMain = new GridView();
List<TextBlock> tList = new List<TextBlock>;

for (int i =0; i < paragraphs.Length; i++)
{
    if (paragraphs[i].Trim() == "")
        continue;

    double height = (paragraphs[i].Trim().Split(' ').Length / 5.0) * 30;
    tList.Add(
        new TextBlock() 
        {
            TextWrapping = TextWrapping.Wrap, 
            Text = paragraphs[i].Trim(), 
            Width = 300, 
            Height = height ,
            Foreground = new SolidColorBrush(Windows.UI.Colors.Black),
            FontSize = 20
        });
}

grdvMain.ItemsSource = tList;
4

1 回答 1

1

ListView 或 GridView 中的项目始终具有相同的高度。它通常基于第一个项目的计算高度,但您也可以通过指定为其定义的ItemsPanelItemHeightItemsControl来设置它(例如 ListView 或 GridView)。

您可以使用 VariableSizedWrapGrid 来定义一个单元格跨越多少个网格列/行,但它的目的更多是为了突出某些项目而不是扩展所有项目以适应所有文本。

如果您的最大文本长度有限 - 您可以使所有项目的大小适合任何文本,或者如果文本不适合,您可以修剪文本,并在点击网格视图项目并导航到详细视图后全部显示的项目。

于 2013-01-28T17:22:59.240 回答