如何将WPF窗口拆分为两部分?

时间:2011-06-09 15:51:24

标签: c# wpf xaml

我想创建一个左侧有一个列表框的应用程序(我将其设置为使其看起来更好)。

在右侧,我想要一个可以添加控件等的区域

所以问题是我需要做什么才能将Window分成两个不相等的部分 (左侧约350像素宽,高度应该是整个窗口),其余部分用于我的“画布”。

2 个答案:

答案 0 :(得分:6)

您可以使用Grid

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="350" /> <!-- Or Auto -->
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <ListBox Grid.Column="0" />
    <Canvas Grid.Column="1" />
</Grid>

或者您可以使用DockPanel

<DockPanel>
    <ListBox DockPanel.Dock="Left" Width="350" />
    <Canvas />
</DockPanel>

网格的好处是您可以更好地控制布局,并允许最终用户使用GridSplitter动态调整列的大小。

答案 1 :(得分:4)

CodeNaked的解决方案的另一种方法是使用DockPanel,其中Canvas占用自动留下的所有空间,而不必计算拆分。

当然这有限制只能对接到四个边缘(有可能在边缘堆叠)但我倾向于在制作初始UI时更喜欢DockPanel,因为它们相对于快速且易于设置网格设置可以很快地复杂化。

<DockPanel LastChildFill="True">
    <ListBox DockPanel.Dock="Left" Width="350"/>
    <Canvas />
</DockPanel>