Silverlight: протяжение к остающемуся пространству в StackPanel

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

39
задан Randy Voet 27 September 2010 в 13:28
поделиться

3 ответа

Что ж, вы уже нашли решение;) StackPanels не заполняет оставшееся пространство по умолчанию, потому что их размер всегда равен объединенному требуемому размеру их дочерних элементов. Сетка - отличный вариант, потому что она будет динамически изменять размер при изменении размера браузера. Ответ Марка об использовании DockPanel тоже отлично работает. Единственный другой метод - это вручную изменить размер элементов при изменении размера родительского элемента управления. В общем, придерживайтесь сеток для внешнего макета, и они заполняют их StackPanels и другими элементами управления, и вы должны быть настроены.

40
ответ дан 27 November 2019 в 02:31
поделиться

Вы можете использовать DockPanel . Установите первый элемент для закрепления сверху, а второй для закрепления заливки или используйте свойство LastChildFill :

<toolkit:DockPanel LastChildFill="True"
 xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit">    
    <Button DockPanel.Dock="Top" Height="30" Width="100" 
     Content="Get Content" x:Name="GetContent"/>
    <ListBox Background="Azure" />
</toolkit:DockPanel>
20
ответ дан 27 November 2019 в 02:31
поделиться

Я согласен с замечанием Джеймса о том, что «StackPanels не заполняет оставшееся пространство по умолчанию, потому что их размер всегда равен объединенному требуемому размеру их дочернего элемента. элементы ". Именно это и происходит, но это не ожидаемый результат.

Я понимаю, почему эта инструкция сжимает содержимое до минимально необходимого места.

<StackPanel Height="Auto" Width="Auto">

Однако ... StackPanel принимает аргумент HorizontalAlignment, который, если он выбран, должен заставить панель стека заполнять содержимое своего родительского контейнера. Это именно то, что происходит, когда вы устанавливаете Orientation = "Vertical". Обратите внимание, что в этом случае StackPanel определит, сколько горизонтального пространства доступно, и выделит его дочерним элементам управления.

<StackPanel Height="30" Orientation="Vertical" HorizontalAlignment="Stretch" > 
   <TextBox /> <!--TextBox fills entire space-->
</StackPanel>

Только когда Orientation = "Horizontal", дочерний размер Horizontal не работает.

<StackPanel Height="30" Orientation="Horizontal" HorizontalAlignment="Stretch" > 
   <TextBox /> <!--TextBox fills smallest space available-->
</StackPanel>
15
ответ дан 27 November 2019 в 02:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: