2011-06-09 43 views
5

我想创建一个左侧有一个列表框的应用程序(我将对其进行设计,以使其稍后显得很好)。如何将WPF窗口分成两部分?

在右边,我想有一个区域,在那里我可以添加控件等

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

+0

请勿在右侧使用画布,因为画布无法处理其子项的布局,您迟早需要布局。 – Codism 2011-06-09 16:08:51

回答

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动态调整列的大小。

+0

大声笑我只是这样做!你编辑了呵呵。哦,帖子已经通过现在>< 编辑:有趣的是,当我发布时,我没有看到这个版本的答案。它只是在我的帖子后。我想你用新的删除了旧的答案 – Maverik 2011-06-09 16:06:26

+0

@Maverik - 是的,我想DockPanel第二,可能因为Tab顺序可以关闭时使用它;-) – CodeNaked 2011-06-09 16:33:41

+0

我只是假设这将不会是一个问题,因为OP似乎是在UI开发的早期阶段,他只是想看看事情发生而不是搞清细节。我相信他会更接近生产时间,因为到那时候他会非常详细地了解UI中的哪些内容(以及哪些标签顺序) – Maverik 2011-06-09 16:56:02

4

CodeNaked解决方案的另一种方法是使用DockPanel,其中Canvas将自动留下所有空间,并且不必分割。

当然,这仅限于对接到四个边缘(有可能在边缘叠加),但我倾向于更喜欢DockPanel,因为它们比较快速且易于设置到网格设置可以相当迅速复杂。

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