WPF gui设计与xaml

时间:2016-12-15 12:47:22

标签: wpf xaml

我是XAML的新手,所以我不知道该怎么做。 我的设计应该在顶部有一个菜单栏(100%宽度),然后是另一个栏,左边有一个按钮,右边有一个(100%宽度),之后它应该是左边的一个侧边栏(关于100px)其余应该是"内容"所以我想放置我的控件(按钮,列表视图,网格,lkab

使用我的代码看起来不错,但侧边栏应位于包含两个dockpanel的dockpanel下。

http://oi66.tinypic.com/xf5dhw.jpg

<Window Background="#f5f5f5" Width="1280" Height="800" x:Class="WpfApplication3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApplication3"
    mc:Ignorable="d"
    Title="primoxx">
<Grid>
    <DockPanel LastChildFill="False" Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Top">
        <DockPanel DockPanel.Dock="Top">
            <Menu DockPanel.Dock="Top">
                <MenuItem Header="_Datei" />
                <MenuItem Header="_Bearbeiten" />
                <MenuItem Header="_Verwaltung" />
                <MenuItem Header="_Vorlagen" />
                <MenuItem Header="_Gestaltung" />
                <MenuItem Header="_Extras" />
                <MenuItem Header="_Hilfe" />
            </Menu>
        </DockPanel>
        <DockPanel Background="White" LastChildFill="False" DockPanel.Dock="Top">
            <Button Height="30px">My Button</Button>
        </DockPanel>
    </DockPanel>
    <DockPanel Grid.Row="1" VerticalAlignment="Top">
        <DockPanel DockPanel.Dock="Left">
            <StackPanel>
                <Button Style="{StaticResource subMenuButton}">Hello</Button>
            </StackPanel>
        </DockPanel>
        <DockPanel DockPanel.Dock="Right">

        </DockPanel>
    </DockPanel>
</Grid>

2 个答案:

答案 0 :(得分:2)

我认为你误解了DockPanel.Dock的工作方式

它可以进入任何UIElement,然后将码头设置在作为停靠面板的第一个父级中,这样您就不需要使用一半停靠面板而不是

<Window Background="#f5f5f5" Width="1280" Height="800" x:Class="WpfApplication3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApplication3"
    mc:Ignorable="d"
    Title="primoxx">
    <DockPanel >
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="_Datei" />
            <MenuItem Header="_Bearbeiten" />
            <MenuItem Header="_Verwaltung" />
            <MenuItem Header="_Vorlagen" />
            <MenuItem Header="_Gestaltung" />
            <MenuItem Header="_Extras" />
            <MenuItem Header="_Hilfe" />
        </Menu>
        <!--if you want to have both buttons on 50% width-->
        <UniformGrid DockPanel.Dock="Top" Columns="2">
            <Button DockPanel.Dock="Left">Hello</Button>
            <Button DockPanel.Dock="Right" Height="30px">My Button</Button>
        </UniformGrid>
        <!--if you want to have both buttons on auto size -->
        <DockPanel LastChildFill="False" DockPanel.Dock="Top">
            <Button DockPanel.Dock="Left">Hello</Button>
            <Button DockPanel.Dock="Right" Height="30px">My Button</Button>
        </DockPanel>
        <StackPanel DockPanel.Dock="Left" Background="blue" MinWidth="100"/>
        <ContentControl  />
    </DockPanel>
</Window>

注意:我将侧面板着色为蓝色,以便您可以看到它

答案 1 :(得分:2)

“网格”面板定义了一个灵活的网格区域,该区域由列和行组成,在此处非常有用:https://msdn.microsoft.com/en-us/library/system.windows.controls.grid(v=vs.110).aspx

为Grid中的每一行添加RowDefinition,为每列添加ColumnDefinition,然后设置Grid中每个元素的Grid.Row / Grid.Column附加属性,以确定其在同一列中的位置。通过分别设置Grid.ColumnSpan和Grid.RowSpan属性,元素可以跨越多个列或行。以下示例标记应该为您提供以下想法:

mysql