我想创建一个左侧有一个列表框的应用程序(我将对其进行设计,以使其稍后显得很好)。如何将WPF窗口分成两部分?
在右边,我想有一个区域,在那里我可以添加控件等
所以,问题是什么,我需要做的窗口分成两个不相等的部分 (左侧约350像素宽和高度应该是整个窗口),其余部分用于我的“画布”。
我想创建一个左侧有一个列表框的应用程序(我将对其进行设计,以使其稍后显得很好)。如何将WPF窗口分成两部分?
在右边,我想有一个区域,在那里我可以添加控件等
所以,问题是什么,我需要做的窗口分成两个不相等的部分 (左侧约350像素宽和高度应该是整个窗口),其余部分用于我的“画布”。
您可以使用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动态调整列的大小。
大声笑我只是这样做!你编辑了呵呵。哦,帖子已经通过现在>< 编辑:有趣的是,当我发布时,我没有看到这个版本的答案。它只是在我的帖子后。我想你用新的删除了旧的答案 – Maverik 2011-06-09 16:06:26
@Maverik - 是的,我想DockPanel第二,可能因为Tab顺序可以关闭时使用它;-) – CodeNaked 2011-06-09 16:33:41
我只是假设这将不会是一个问题,因为OP似乎是在UI开发的早期阶段,他只是想看看事情发生而不是搞清细节。我相信他会更接近生产时间,因为到那时候他会非常详细地了解UI中的哪些内容(以及哪些标签顺序) – Maverik 2011-06-09 16:56:02
CodeNaked解决方案的另一种方法是使用DockPanel,其中Canvas将自动留下所有空间,并且不必分割。
当然,这仅限于对接到四个边缘(有可能在边缘叠加),但我倾向于更喜欢DockPanel,因为它们比较快速且易于设置到网格设置可以相当迅速复杂。
<DockPanel LastChildFill="True">
<ListBox DockPanel.Dock="Left" Width="350"/>
<Canvas />
</DockPanel>
请勿在右侧使用画布,因为画布无法处理其子项的布局,您迟早需要布局。 – Codism 2011-06-09 16:08:51