2010-02-10 3 views
4

Я пытаюсь создать представление с помощью datagrid разделителя сетки и нижней панели, содержащей некоторые сообщения. Что-то вроде:WPF Datagrid виртуализация и автоматическая высота (не явная)

<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 становится очень большой, и мне нужна виртуализация. Это работает только в том случае, если явная высота указана на контейнер сетки, я верю?

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

ответ

2

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

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

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

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

Смежные вопросы