Установите размер DataGrid, чтобы соответствовать всему его содержимому - PullRequest
0 голосов
/ 24 февраля 2011

Мне нужно, чтобы размер DataGrid соответствовал всему его содержимому (даже если DataGrid будет больше, чем его родитель).Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2011

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

0 голосов
/ 24 февраля 2011

Редактировать: Re: Оригинальный комментарий автора

Еще раз привет,

Реальный ответ на ваш вопрос Нет - яконечно, ты не хочешь это слышать.Невозможно заставить ребенка отделиться и сделать свое дело.

Однако есть способы, которые мы можем использовать, чтобы обойти эту проблему.Эти обходные пути дают эффект, аналогичный тому, что вы хотите.Самым сложным является нарушение ограничений, определенных родителем DataGrid.Из того, что я могу сказать, у вас есть только два пути, по которым вы можете идти:

Вариант 1: Рефакторинг всех родителей для изменения размера с помощью DataGrid.Лучший способ сделать это - использовать свойства MinWidth и MinHeight для всего.По умолчанию они будут использовать свой размер, но если одному из их детей понадобится больше места, они расширятся.Это позволяет расширить DataGrid в соответствии с его потребностями.

<Grid MinWidth="500" MinHeight="500">
   <sdk:DataGrid ItemsSource="{Binding Items}">
</Grid>

Вариант 2. Поместите DataGrid поверх «родительских» элементов управления.Подумайте, HTML / CSS.Это самая хитрая концепция, потому что вы должны «знать», куда поместить DataGrid и как он будет расти.Вы можете добавить обтравочный контур, чтобы DataGrid выглядел как дочерний элемент Grid, но это ответ на другой пост.

<Grid Width="500", Height="500"/>
<sdk:DataGrid ItemsSource="{Binding Items}" Margin="300,300,0,0"/>

Еще раз, я надеюсь, это поможет.Дайте мне знать, если вам нужно что-нибудь еще.


Привет,

Я предполагаю, что вам нужны полосы прокрутки в DataGrid.

По умолчанию DataGrid будет генерировать всеколонны.Но поскольку он по умолчанию не включает полосы прокрутки, он пытается разместить все столбцы, которые он находит, на одном экране.Вы можете включить эти полосы прокрутки, установив в ScrollViewer DataGrid их показ.

Если это не то, что вам нужно, дайте мне знать.

Хорошего дня!

<sdk:DataGrid 
ItemsSource="{Binding Items}" 
AutoGenerateColumns="True"
ScrollViewer.HorizontalScrollBarVisibility="Visible"     
ScrollViewer.VerticalScrollBarVisibility="Visible"/>

PS Если вы настраиваете свои столбцы вручную, сделайтене установлено Width="*".Установка Width="*" указывает DataGrid использовать только ширину остатка, доступную на одном экране.

Избегайте этого!<sdk:DataGridTextColumn ... Width="*"/>

...