Silverlight настроить высоту DataGrid во время выполнения - PullRequest
1 голос
/ 20 сентября 2010

У меня есть Сетка из 5 рядов.В строке 2 и 4 у меня есть DataGrid.Другие ряды имеют фиксированную высоту.Содержимое таблиц в DataGrids, конечно же, определяется динамически, а следовательно, и их высота.Поскольку в моем конкретном приложении есть зависимость между высотой двух таблиц, я хочу настроить MaxHeight для обеих во время выполнения.Если таблица длиннее, чем первоначально указанная MaxHeight, она должна получить ScrollBar.Но высота обеих таблиц никогда не должна превышать длину страницы браузера.

Теперь я попытался сделать это во время выполнения, вызванное некоторым событием:

        if (availableSpace - heightOfTable1 - heightOfTable2 < 0)
        {
            if (heightOfTable1 > heightOfTable2)
            {
                Table1.MaxHeight = availableSpace - heightOfTable2;
                // Trigger a rerendering
                Table1.ItemsSource = null;
                Table1.ItemsSource = List1;
                ...

            }
            ...
        }

Однако я заметил, что ActualHeightне изменился, когда я это сделаю.ActualHeight теперь больше указанного MaxHeight во время выполнения Что я делаю не так?

1 Ответ

0 голосов
/ 20 сентября 2010

Также установите для свойства Высота сетки данных значение MaxHeight (если они превышают их текущий MaxHeight).Он не будет перепроверять изменение MaxHeight, если оно уже превышает его.

Вам не нужно запускать повторную визуализацию ... Рассматривали ли вы изменение высоты строк и максимальной высоты строки сеткистроки в коде вместо данных?Когда я манипулирую высотой строк, а не высотой содержимого, кажется, что все становится намного более плавно.Это также имеет смысл в вашем примере, поскольку вы в основном пытаетесь распределить оставшуюся высоту строки (строки 2 и 4) на расчетной основе.Изменение размеров сетки данных кажется неправильным.

Просто назовите отдельные строки с помощью x: Name = "Row2" и т. Д., Как и для любого другого элемента.Я на самом деле использую привязку данных высоты строк сетки для вычисляемых двойных свойств (как я использую MVVM), но для вашего примера, похоже, стоит выделение кода.

...