Silverlight регулирует высоту DataGrid во время выполнения

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

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

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

            }
            ...
        }

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


person Keith    schedule 20.09.2010    source источник


Ответы (1)


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

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

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

person Gone Coding    schedule 20.09.2010