以下是我的xaml代码:
<Window x:Class="ScoresBank.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow">
<DockPanel LastChildFill="True">
<WrapPanel DockPanel.Dock="Top">
<ToolBar Height="25"></ToolBar>
</WrapPanel>
<WrapPanel DockPanel.Dock="Bottom">
<StatusBar Name="stbBottom" Height="25"
BorderThickness="2"
BorderBrush="Black">Example</StatusBar>
</WrapPanel>
<StackPanel DockPanel.Dock="Left">
<DockPanel LastChildFill="True">
<WrapPanel DockPanel.Dock="Top">
<Button Name="btnBrowseTags">TAGS</Button>
<Button Name="btnBrowseTitles">TITLES</Button>
</WrapPanel>
<ComboBox DockPanel.Dock="Top" Name="cbxCategory">
Example
</ComboBox>
<WrapPanel DockPanel.Dock="Bottom">
<TextBox Name="txtKeyword"></TextBox>
<Button Name="btnFind">Find</Button>
</WrapPanel>
<ListBox Name="lbxBrowse">
</ListBox>
</DockPanel>
</StackPanel>
<StackPanel DockPanel.Dock="Right">
<Button>Example</Button>
</StackPanel>
<Canvas>
</Canvas>
</DockPanel>
这是我当前的布局视图:
所以,填充容器的意思是:
lbxBrowse
填充左侧DockPanel
内StackPanel
的中间空格。txtKeyword
填充WrapPanel
。stbBottom
填充WrapPanel
。我尝试了什么:
DockPanel
LastChildFill="True"
。但它似乎不起作用。DockPanel
。我不使用固定大小,因为即使在多屏幕分辨率下调整大小,我也需要它们保持整洁。似乎需要ToolBar
和StatusBar
上的固定尺寸,否则,文字将是看不见的。
P.S。如果可能的话,我更喜欢解决方案是XAML代码,而不是C#代码。否则,C#代码也没问题。
谢谢。
答案 0 :(得分:2)
您可以使用StackPanel
并设置DockPanel
和Grid
,而不是使用Grid.ColumnDefinitions
和Grid.RowDefinitions
。您可以直接指定每行Height
和每列Width
。它更易于使用,并且可以自动适应内容和容器。
答案 1 :(得分:2)
您应该使用Grid
。它更容易配置。这是一个例子(我不确切地知道你想如何设置你的布局)。
<Window x:Class="SampleWpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="400" Width="600">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Margin="5" Content="TAGS"
Grid.Column="0" Grid.Row="0" />
<Button Margin="5" Content="TITLES"
Grid.Column="1" Grid.Row="0" />
<Button Margin="5" Content="EXAMPLES"
Grid.Column="2" Grid.Row="0"
HorizontalAlignment="Right"/>
<ComboBox Margin="5"
Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" />
<ListBox Margin="5"
Grid.Column="2" Grid.Row="1" Grid.RowSpan="2" />
<Button Margin="5" Content="EXAMPLE"
Grid.Column="2" Grid.Row="3" HorizontalAlignment="Left" />
</Grid>
</Window>
结果:
使用网格,您可以将列和行的高度和宽度设置为特定值(以磅,像素,厘米等),列内容(Auto
)或与网格成比例(使用*
)。