Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > WPF - создание интерфейса


Автор: thomas 12.6.2008, 23:17
Приветствую всех.
Поведение отдельных контролов в WPF более мение освоил. Но вот создавать интерфейс с большим набором контролов что-то не получаеться.
Пробую создать окно: вверху меню, слева expander, а справа content в зависимости от того что выбрали в expander или меню.
Так вот свойство DockPanel.Dock не срабатывает.
Код


<DockPanel LastChildFill="True">
        <Menu DockPanel.Dock="Top" Height="20">
            <MenuItem Header="_File">
                <MenuItem Header="_New" InputGestureText="Ctrl+N"/>
                <MenuItem Header="_Open" InputGestureText="Ctrl+O"/>
                <MenuItem Header="_Save" InputGestureText="Ctrl+S"/>
            </MenuItem>
            <MenuItem Header="_Edit">
                <MenuItem Header="_Copy" Command="ApplicationCommands.Copy"/>
                <MenuItem Header="C_ut" Command="ApplicationCommands.Cut"/>
                <MenuItem Header="_Paste" Command="ApplicationCommands.Paste"/>
            </MenuItem>
            <MenuItem Header="_View">
                <MenuItem Header="Preview" InputGestureText="Ctrl+Y"/>
                <Separator/>
                <MenuItem Header="Show _Grid" IsCheckable="True"/>
                <MenuItem Header="Show G_uides" IsCheckable="True" IsChecked="True"/>
                <MenuItem Header="Show _Rulers" IsCheckable="True"/>
            </MenuItem>
        </Menu>
        <StackPanel Background="BlanchedAlmond" Width="200" DockPanel.Dock="Left">
            <Expander Name="ExpanderClosed" Header="Eerst" Background="#EEEEEE" Width="100" Margin="10" IsExpanded="false">
                <TextBlock>
                    Expander content 1
                </TextBlock>
            </Expander>
            <Expander Name="ExpanderOpen" Header="Tweede" Background="#EEEEEE" Width="100" Margin="10" IsExpanded="true">
                <TextBlock>
                    Expander content 2
                </TextBlock>
            </Expander>
            <Expander Name="ExpanderMetButton" Header="Button" Background="#EEEEEE" Width="100" Margin="10" IsExpanded="false">
                <StackPanel>
                    <Button Width="80">
                        <Button.ContextMenu>
                            <ContextMenu>
                                <MenuItem Header="Groot" IsCheckable="True" IsChecked="True"/>
                                <MenuItem Header="Klein" IsCheckable="True"/>
                                <MenuItem Header="Kleiner" IsCheckable="True"/>
                            </ContextMenu>
                        </Button.ContextMenu>
                        TestButton 1
                    </Button>
                    <Button Width="80">
                        TestButton 2
                    </Button>
                    <Button Width="80">
                        TestButton 3
                    </Button>
                </StackPanel>
            </Expander>
        </StackPanel>
    </DockPanel>

В качестве общего контейнера пробую применить DockPanel. Menu прилипает к верху без проблем.
А вот expander, который я мосестил в StackPanel, а точнее сама панель к левому краю окна(DockPanel)липнуть не хочет. А упрямо остаеться в центре.

У кого какие мнения по этому поводу.

Или мне надо использовать только Grid в качестве основного элемента. Задавать ему колонки и строки, а уже в них "пихать" все остальное?

Автор: PashaPash 13.6.2008, 13:15
thomas, ты выставил LastChildFill="True" и забыл добавить тот самый контент, который у тебя должен "справа все заполнять". Поэтому fill применяется к StackPanel.
Код

...
        </StackPanel>
        <TextBlock>Some Content Here</TextBlock>
</DockPanel>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)