我是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>
答案 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