Конструкция с тремя столбцами: один статический заголовок, одна боковая панель с v-scroll, одна центральная коробка с v / h-scroll - PullRequest
1 голос
/ 15 сентября 2009

Как бы вы закодировали этот дизайн:

http://roosteronacid.com/xaml.png

Обновление:

Вот где я нахожусь:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" MinWidth="200" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <!-- v-scroll on contents -->
    <StackPanel x:Name="sidebar" Grid.Column="0">
        <StackPanel x:Name="top-box" Margin="4, 4, 4, 4"
                    VerticalAlignment="Top" Background="#FFCECECE" />

        <StackPanel x:Name="bottom-box" Grid.Column="0">
            <StackPanel Margin="4, 4, 4, 4" />
        </StackPanel>
    </StackPanel>

    <controls:GridSplitter Grid.Column="0" Height="Auto" Width="2" 
                           HorizontalAlignment="Right" Background="Black" />

    <!-- no scroll -->
    <StackPanel x:Name="static-top-box" Grid.Column="1" Height="60"
                VerticalAlignment="Top" Background="AliceBlue">
        <StackPanel Margin="4, 4, 4, 4" />
    </StackPanel>

    <!-- v/h-scroll on contents -->
    <StackPanel x:Name="v-h-scroll-box" Grid.Column="1" Height="Auto"
                Margin="0,60,0,0" Background="Beige">
        <StackPanel Margin="4, 4, 4, 4" />
    </StackPanel>
</Grid>

Ответы [ 2 ]

1 голос
/ 15 сентября 2009

A Grid с двумя строками и двумя столбцами. Один контроль в ячейке 0,0 с RowSpan равен 2. Каждый из остальных контролей в ячейках 1,0 и 1,1 соответственно. Строка 1 имеет абсолютный размер, а строка 2 - в процентах. Как вы управляете отображением полос прокрутки, зависит от вашего дизайна и того, какие элементы управления вы размещаете в сетке.

Обновление

Полагаю, вам просто нужно разместить свои StackPanel экземпляры внутри ScrollViewer экземпляров. Это должно дать вам полосы прокрутки, которые вам нужны.

0 голосов
/ 15 сентября 2009

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

<DockPanel LastChildFill="True">
    <ScrollViewer DockPanel.Dock="Left">
        Left Pane Content
    </ScrollViewer>

    <TopPaneContent DockPanel.Dock="Top" />

    <ScrollViewer>
        Main Body Content
    </ScrollViewer>
</DockPanel>

Я только что заметил тег Silverlight. Чтобы использовать DockPanel в Silverlight, вам нужно использовать Silverlight Toolkit. Инструкции по его добавлению здесь , и вы можете найти его здесь .

...