Виртуализация WPF Datagrid и автоматическая высота (не явно) - PullRequest
4 голосов
/ 10 февраля 2010

Я пытаюсь создать представление с сеткой данных, разделителем сетки и нижней панелью, содержащей некоторые сообщения. Что-то вроде:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="10"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <toolkit:DataGrid Grid.Row="0" {details...} />
    <GridSplitter Grid.Row="1" {details...} />
    <TextBox Grid.Row="2" {details...} />
</Grid>

Этот макет выглядит идеально - сетка заполняет большую часть вида, и у меня есть разделитель, чтобы при необходимости расширить текстовое поле внизу Проблема в том, что Datagrid становится очень большим, и мне нужно включить виртуализацию. Это работает, только если я считаю, что контейнеру с сеткой указана явная высота?

Есть ли способ получить макет, который я хочу (где сетка заполняет все доступное пространство), но также включена виртуализация?

1 Ответ

2 голосов
/ 11 февраля 2010

Есть ли способ получить макет, который я хочу (где сетка заполняет все доступное пространство), но также включена виртуализация?

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

Как вы определяете, что строки в вашей DataGrid не виртуализируются?

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

...