Добавление текстовых блоков разной высоты в gridview c# winrt

Я пытаюсь добавить несколько текстовых блоков, содержащих текст разной длины, в вид сетки. Я хочу настроить свойства высоты и ширины, чтобы текст в текстовых блоках был виден. Проблема в том, что когда программа запускается, все элементы текстового блока имеют одинаковую высоту. Ширина такая, как я указал, но высота не соответствует значению, которое я присвоил. Что мне не хватает?

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;

person yohannist    schedule 28.01.2013    source источник


Ответы (1)


Элементы в ListView или GridView всегда имеют одинаковую высоту. Обычно она основывается на рассчитанной высоте первого элемента, но ее также можно задать, указав ItemHeight файла ItemsPanel, определенный для ItemsControl (например, ListView или GridView).

Вы можете использовать VariableSizedWrapGrid, чтобы иметь возможность определить, сколько столбцов/строк сетки охватывает ячейка, но цель этого состоит в том, чтобы показать некоторые элементы, а не расширять все элементы, чтобы они соответствовали всему тексту.

Если ваша максимальная длина текста ограничена, вы можете сделать все элементы размером, который будет соответствовать любому тексту, или вы можете обрезать текст, если он не помещается, и отобразить его весь после нажатия элемента сетки и перехода к подробному представлению. предмета.

person Filip Skakun    schedule 28.01.2013