如何:构造动态布局

更新:2007 年 11 月

Visual Studio Windows Presentation Foundation (WPF) 设计器提供了许多支持动态定位的 Panel 控件。可以通过将一个 Panel 控件添加为另一个的子控件来组合 Panel 控件。您可以使用下列 Panel 控件在您的应用程序中动态定位元素:

Grid 定义一个区域,您可以在其中的行和列中定位子元素。StackPanelWrapPanel 自动在行或列中定位子元素。DockPanel 自动沿着边缘定位子元素。有关不同面板的更多信息,请参见使用绝对定位和动态定位进行布局

重要说明:

只要可能,就最好使用动态布局。动态布局是最灵活的,适应诸如本地化之类的内容更改,并且允许最终用户最大限度地控制他们的环境。若要查看绝对布局的示例,请参见如何:根据绝对定位构造布局

为动态行为设置窗口属性

创建新窗口时,您可以设置属性以最大限度地提高动态布局的灵活性。

为动态行为设置窗口属性

  1. 在“设计”视图中,选择该窗口。

  2. 在“属性”窗口中,设置 Window 的下列属性:

    属性

    效果

    ResizeMode

    CanResize

    这允许用户调整窗口的大小,以便为控件腾出更多空间。

    SizeToContent

    WidthAndHeight

    这允许窗口在其内容扩展时自动调整窗口本身的大小。

为动态行为设置面板属性

向窗口或其他面板中添加新面板(例如 GridDockPanelStackPanel)时,您可以设置属性以最大限度地提高动态布局的灵活性。

为动态行为设置面板属性

  1. 在“设计”视图中,选择该面板。

  2. 在“属性”窗口中,设置 Panel 的下列属性:

    属性

    效果

    Width

    Auto

    面板会进行拉伸以填充父窗口或面板的宽度。

    Height

    Auto

    面板会进行拉伸以填充父窗口或面板的高度。

为动态行为设置网格属性

您可以使用自动和星号调整大小来帮助您创建根据其内容动态调整大小的网格。自动调整大小用于允许控件容纳它们的内容,即使内容更改大小也是如此。星号调整大小用于根据加权比例分配可用空间。有关更多信息,请参见 Star

使用“设计”视图创建新行和新列时,默认情况下使用 Star 调整大小来创建它们。有关更多信息,请参见如何:向网格中添加行和列

提示:

您可能会发现先在“集合编辑器”中添加行和列,然后在 XAML 编辑器中设置行高和列宽更容易。

为动态行为设置网格属性

  1. 在“设计”视图中,选择该网格。

  2. 在“属性”窗口中,找到 ColumnDefinitions 属性,并单击“属性值”列中的省略号按钮。

    此时将会显示“集合编辑器”。

    1. 选择或添加一个新的列定义。

    2. 使用自动和星号调整大小来设置列宽,以便最大限度地提高灵活性。

    3. 单击“确定”以关闭“集合编辑器”并返回到 WPF 设计器。

    说明:

    其 Width 属性被设置为 Auto 的列会暂时隐藏,因为它们没有任何内容。为了避免这种情况,您可以在工作时使用星号调整大小,然后在完成后改成“自动”。

  3. 在“属性”窗口中,找到 RowDefinitions 属性,并单击“属性值”列中的省略号按钮。

    此时将会显示“集合编辑器”。

    1. 选择或添加一个新的行定义。

    2. 使用自动和星号调整大小来设置行高,以便最大限度地提高灵活性。

    3. 单击“确定”以关闭“集合编辑器”并返回到 WPF 设计器。

    说明:

    其 Height 属性设置为 Auto 的行会暂时隐藏,因为它们没有任何内容。为了避免这种情况,您可以在工作时使用星号调整大小,然后在完成后改成“自动”。

为动态行为设置控件属性

向窗口或面板中添加新控件时,您可以设置属性以最大限度地提高动态布局的灵活性。您应该避免为控件设置特定的大小,以便确保当窗口或内容更改时控件将动态调整大小。

为动态行为设置控件属性

  1. 在“设计”视图中,选择一个控件。

  2. 在“属性”窗口中,为该控件设置下列属性:

    属性

    效果

    Width

    Auto

    控件水平扩展以容纳其内容。

    Height

    Auto

    控件垂直扩展以容纳其内容。

    MinWidth

    0

    控件可以根据需要在水平方向尽可能缩小。

    MinHeight

    0

    控件可以根据需要在垂直方向尽可能缩小。

    MaxWidth

    Infinity

    控件可以根据需要在水平方向尽可能扩展。

    MaxHeight

    Infinity

    控件可以根据需要在垂直方向尽可能扩展。

    说明:

    显示的值是默认值。

请参见

任务

演练:构造动态布局

概念

WPF 设计器中的对齐方式

布局系统

WPF 设计器概述

其他资源

布局演练