Ряд сетки Silverlight размером со звезду (неправильный) ведет себя как ряд с автоматическими размерами - PullRequest
0 голосов
/ 20 сентября 2010

У меня есть следующая сетка в качестве элемента управления LayoutRoot на моей странице Silverlight:

    <Grid.RowDefinitions>
        <RowDefinition Height="30"/>
        <RowDefinition Height="*" />
        <RowDefinition Height="30" />
    </Grid.RowDefinitions>

Все содержимое второй строки представляет собой сетку данных, заполненную связыванием данных, и общая высота сетки великаможет быть 3000 пикселей.Я понимаю, что, выполняя определения строк таким образом, первая и третья строки должны иметь одинаковую высоту и всегда оставаться видимыми (например, строки верхнего и нижнего колонтитула), в то время как вторая строка должна иметь размер до общей высоты минус 60 для остальныхстрок.Но на самом деле происходит то, что вторая строка занимает все 3000 пикселей, не показывает вертикальную полосу прокрутки и толкает строку нижнего колонтитула за нижнюю часть элемента управления.Это то, что Высота = "Авто" должна делать, я думаю, НЕ то, что должна делать Высота = "*".

Чего мне здесь не хватает?Спасибо!

Обновление : Проблема оказалась в том, что моя сетка была на странице навигации, которая была встроена в главную страницу, потому что я принял шаблон проекта Silverlight по умолчанию.Эта главная страница была разработана, чтобы можно было расширить содержимое, поместив все в StackPanel.Не похоже, что вам действительно нужно установить свойства выравнивания Horiontal и Vertical в Stretch.Когда я заменил StackPanel на сетку и установил высоту строки внутренней сетки на *, он заработал как положено.

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

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

Вам необходимо добавить VerticalAlignment = "Stretch" HorizontalAlignment = "Stretch" в самой вашей сетке.Это приведет к растяжению в соответствии с размерами компонента Silverlight (например, 100% от браузера).

Базовый расчет строк и столбцов выглядит следующим образом:

  1. Вычтите строки любого фиксированного размера/ columns
  2. Обработка и вычитание любых строк / столбцов автоматического изменения размера на основе содержимого.
  3. Разделите остаток пропорционально *

* Примечание. Если сама сетка не являетсяограничены высота и ширина, чтобы соответствовать содержимому (например, авто).

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

1 голос
/ 21 сентября 2010

Все зависит от контейнера, в котором размещена сетка.Если контейнер не имеет ограничений, размер сетки будет занимать максимально доступное пространство.Кто-то должен установить ограничение, обычно это самая верхняя сетка (LayoutRoot).Вам просто нужно быть осторожным, чтобы не сломать это на одном из уровней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...