Содержание контента с плавающей точкой Silverlight - PullRequest
7 голосов
/ 05 ноября 2010

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

                <StackPanel Orientation="Horizontal">
                    <TextBlock VerticalAlignment="Center" FontSize="14" Margin="5,0,0,0">Ahoy!</TextBlock>
                    <Button HorizontalAlignment="Right" Width="25" Height="25" Style="{StaticResource buttonGlassOrb}" Background="Red" />
                </StackPanel>

Что, похоже, не работает.Очевидно, что добавление поля в TextBlock будет работать следующим образом:

                <StackPanel Orientation="Horizontal">
                    <TextBlock VerticalAlignment="Center" FontSize="14" Margin="5,0,120,0">Ahoy!</TextBlock>
                    <Button HorizontalAlignment="Right" Width="25" Height="25" Style="{StaticResource buttonGlassOrb}" Background="Red" />
                </StackPanel>

Но это плохо по всем причинам.Есть ли более естественные способы сделать это?

Ответы [ 3 ]

8 голосов
/ 05 ноября 2010

Лично я бы использовал Grid вместо StackPanel для этого.Просто добавьте два столбца, один из которых имеет размер «*», а другой - «Авто», и поместите ваш TextBlock в первый столбец, кнопку во второй столбец:

3 голосов
/ 05 ноября 2010

Вместо этого используйте DockPanel:

<DockPanel>
    <TextBlock VerticalAlignment="Center" FontSize="14" Margin="5,0,0,0">Ahoy!</TextBlock>
    <Button DockPanel.Dock="Right" Width="25" Height="25" Style="{StaticResource buttonGlassOrb}" Background="Red" />
</DockPanel>

Настройка Dock по умолчанию - Left, поэтому она ведет себя как горизонтальная StackPanel для элементов, которые не имеют явной настройки Dock.

2 голосов
/ 05 ноября 2010

StackPanels подходят для упрощенных сценариев, как только вы захотите получить полный контроль над макетом, используйте Grid

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