导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Grid 类

2013/12/13

定义由列和行组成的可变网格区域。

Namespace:  System.Windows.Controls
程序集:  System.Windows(位于 System.Windows.dll 中)
XMLNS for XAML: 未映射到 xmlns。

public class Grid : Panel
<Grid ...>
  oneOrMoreUIElements
</Grid>

XAML 值

oneOrMoreUIElements

一个或多个对象元素,派生自 UIElement 类。此处定义的对象元素成为 Children 集合的成员。

Grid 类型公开以下成员。

  名称说明
公共方法Grid初始化 Grid 类的新实例。
返回顶部

  名称说明
公共属性ActualHeight获取 FrameworkElement 的呈现高度。 (从 FrameworkElement 继承。)
公共属性ActualWidth获取 FrameworkElement 的呈现宽度。 (从 FrameworkElement 继承。)
公共属性AllowDrop获取或设置一个值,该值确定此 UIElement 是否可用作拖放操作的放置目标。 (从 UIElement 继承。)
公共属性Background获取或设置一个用于填充面板的 Brush (从 Panel 继承。)
公共属性CacheMode获取或设置一个值,该值指示应在可能时缓存已呈现内容。 (从 UIElement 继承。)
公共属性Children获取面板子元素的集合。 (从 Panel 继承。)
公共属性Clip获取或设置用于定义 UIElement 的内容边框的 Geometry (从 UIElement 继承。)
公共属性ColumnDefinitions获取针对此 Grid 实例定义的 ColumnDefinitionCollection
公共属性Cursor基础结构。 获取或设置指针悬停在 FrameworkElement 上时所显示的光标图像。 (从 FrameworkElement 继承。)
公共属性DataContext获取或设置 FrameworkElement 参与数据绑定时的数据上下文。 (从 FrameworkElement 继承。)
公共属性DesiredSize获取此 UIElement 在布局过程的测量处理过程中计算的大小。 (从 UIElement 继承。)
公共属性Dispatcher获取与此对象关联的 Dispatcher (从 DependencyObject 继承。)
公共属性FlowDirection获取或设置文本和其他用户界面元素在控制其布局的任何父元素中的流动方向。 (从 FrameworkElement 继承。)
公共属性Height获取或设置 FrameworkElement 的建议高度。 (从 FrameworkElement 继承。)
公共属性HorizontalAlignment获取或设置在布局父级(如面板或项控件)中构成 FrameworkElement 时应用于此元素的水平对齐特征。 (从 FrameworkElement 继承。)
公共属性IsHitTestVisible获取或设置此 UIElement 的包含区域是否可为命中测试返回 true 值。 (从 UIElement 继承。)
公共属性IsItemsHost获取一个值,该值指示此 Panel 是否是 ItemsControl 生成的 UI 项的容器。 (从 Panel 继承。)
公共属性Language获取或设置应用于 FrameworkElement 的本地化/全球化语言信息。 (从 FrameworkElement 继承。)
公共属性Margin获取或设置 FrameworkElement 的外边距。 (从 FrameworkElement 继承。)
公共属性MaxHeight获取或设置 FrameworkElement 的最大高度约束。 (从 FrameworkElement 继承。)
公共属性MaxWidth获取或设置 FrameworkElement 的最大宽度约束。 (从 FrameworkElement 继承。)
公共属性MinHeight获取或设置 FrameworkElement 的最小高度约束。 (从 FrameworkElement 继承。)
公共属性MinWidth获取或设置 FrameworkElement 的最小宽度约束。 (从 FrameworkElement 继承。)
公共属性Name获取或设置对象的标识名称。 当 XAML 处理器从标记创建对象树时,运行时代码可以使用此名称引用标记元素。 (从 FrameworkElement 继承。)
公共属性Opacity获取或设置对象的不透明度。 (从 UIElement 继承。)
公共属性OpacityMask获取或设置用于改变此对象区域的不透明度的画笔。 (从 UIElement 继承。)
公共属性Parent获取对象树中此 FrameworkElement 的父对象。 (从 FrameworkElement 继承。)
公共属性Projection获取或设置在呈现此 UIElement 时要应用的透视投影(三维效果)。 (从 UIElement 继承。)
公共属性RenderSize获取 UIElement 的最终呈现大小。 (从 UIElement 继承。)
公共属性RenderTransform获取或设置影响 UIElement 的呈现位置的变换信息。 (从 UIElement 继承。)
公共属性RenderTransformOrigin获取或设置由 RenderTransform 声明的任何可能呈现转换的原点,相对于 UIElement 的边界。 (从 UIElement 继承。)
公共属性Resources获取本地定义的资源字典。 在 XAML 中,可以通过 XAML 隐式集合语法,将资源项建立为 frameworkElement.Resources 属性元素的子对象元素。 (从 FrameworkElement 继承。)
公共属性RowDefinitions获取针对此 Grid 实例定义的 RowDefinitionCollection
公共属性ShowGridLines获取或设置一个值,该值指示此 Grid 中的网格线是否可见。
公共属性Style获取或设置呈现过程中应用于此对象的实例 Style (从 FrameworkElement 继承。)
公共属性Tag获取或设置一个可用于存储有关此对象的自定义信息的任意对象值。 (从 FrameworkElement 继承。)
公共属性Triggers获取为 FrameworkElement 定义的动画的触发器的集合。 (从 FrameworkElement 继承。)
公共属性UseLayoutRounding获取或设置一个值,该值确定对象及其可视化子树的呈现是否应使用将呈现与整像素对齐的舍入行为。 (从 UIElement 继承。)
公共属性UseOptimizedManipulationRouting获取或设置指示系统是否应处理输入事件或是否 FrameworkElement 应处理输入事件的值。 (从 FrameworkElement 继承。)
公共属性VerticalAlignment获取或设置在父对象(如面板或项控件)中构成 FrameworkElement 时应用于此元素的垂直对齐特征。 (从 FrameworkElement 继承。)
公共属性Visibility获取或设置 UIElement 的可见性。不可见的 UIElement 不呈现,也不将其所需大小告知布局。 (从 UIElement 继承。)
公共属性Width获取或设置 FrameworkElement 的宽度。 (从 FrameworkElement 继承。)
返回顶部

  名称说明
公共附加属性Column获取或设置一个值,该值指示 Grid 中的子内容应出现在哪列中。
公共附加属性ColumnSpan获取或设置一个值,该值指示 Grid 中的子内容所跨越的总列数。
公共附加属性Row获取或设置一个值,该值指示 Grid 中的子内容应出现在哪个行内。
公共附加属性RowSpan获取或设置一个值,该值指示 Grid 中的子内容所跨越的总行数。
返回顶部

  名称说明
公共方法AddHandler为指定的路由事件添加路由事件处理程序,并将该处理程序添加到当前元素的处理程序集合中。将 handledEventsToo 指定为 true 时,可为已标记为由其他元素在事件路由过程中处理的路由事件调用所提供的处理程序。 (从 UIElement 继承。)
公共方法Arrange定位子对象并确定 UIElement 的大小。为其子元素实现自定义布局的父对象应从其布局重写实现调用此方法以形成递归布局更新。 (从 UIElement 继承。)
受保护的方法ArrangeOverride排列 Grid 元素的内容。 (重写 FrameworkElement.ArrangeOverride(Size)。)
公共方法CaptureMouse将触摸输入捕获设置为 UIElement (从 UIElement 继承。)
公共方法CheckAccess确定调用线程是否可以访问此对象。 (从 DependencyObject 继承。)
公共方法ClearValue清除依赖项属性的本地值。 (从 DependencyObject 继承。)
公共方法Equals(Object)确定指定的 Object 是否等于当前的 Object (从 Object 继承。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法FindName检索具有指定标识符名称的对象。 (从 FrameworkElement 继承。)
公共方法GetAnimationBaseValue返回为 Windows Phone 依赖项属性设置的任意基值,在动画不活动时将应用它们。 (从 DependencyObject 继承。)
公共方法GetBindingExpression检索 BindingExpression 中已建立绑定的依赖项属性。 (从 FrameworkElement 继承。)
公共方法静态成员GetColumn从指定的 FrameworkElement 中获取 Grid.Column 附加属性的值。
公共方法静态成员GetColumnSpan从指定的 FrameworkElement 中获取 Grid.ColumnSpan 附加属性的值。
公共方法GetHashCode用作特定类型的哈希函数。 (从 Object 继承。)
公共方法静态成员GetRow从指定的 FrameworkElement 中获取 Grid.Row 附加属性的值。
公共方法静态成员GetRowSpan从指定的 FrameworkElement 中获取 Grid.RowSpan 附加属性的值。
公共方法GetType获取当前实例的 Type (从 Object 继承。)
公共方法GetValueDependencyObject 返回依赖项属性的当前有效值。 (从 DependencyObject 继承。)
公共方法InvalidateArrange使 UIElement 的排列状态(布局)无效。使其无效后,将会更新 UIElement 的布局(以异步方式进行)。 (从 UIElement 继承。)
公共方法InvalidateMeasure使 UIElement 的测量状态(布局)无效。 (从 UIElement 继承。)
公共方法Measure更新 UIElementDesiredSize。一般地,实现其布局子级的自定义布局的对象从自己的 MeasureOverride 实现调用此方法以形成递归布局更新。 (从 UIElement 继承。)
受保护的方法MeasureOverride测量 Grid 的子元素,以便准备在 ArrangeOverride 传递过程中排列它们。 (重写 FrameworkElement.MeasureOverride(Size)。)
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法OnApplyTemplate在派生类中重写后,每当应用程序代码或内部进程(如重新生成布局处理过程)调用 ApplyTemplate,都将调用此方法。 简而言之,这意味着就在 UI 元素在应用程序中显示前调用该方法。 有关更多信息,请参见“备注”。 (从 FrameworkElement 继承。)
受保护的方法OnCreateAutomationPeer在派生类中实现时,为 Windows Phone 自动化基础结构返回类特定的 AutomationPeer 实现。 (从 UIElement 继承。)
公共方法ReadLocalValue返回依赖项属性的本地值(如果设置了本地值)。 (从 DependencyObject 继承。)
公共方法ReleaseMouseCaptureUIElement 中移除触摸输入捕获。在此调用后,一般没有对象具有触摸输入捕获。 (从 UIElement 继承。)
公共方法RemoveHandler从此 UIElement 中移除指定的路由事件处理程序。 (从 UIElement 继承。)
公共方法SetBinding使用提供的绑定对象,将绑定附加到 FrameworkElement 上,并返回 BindingExpressionBase 以供以后使用。 (从 FrameworkElement 继承。)
公共方法静态成员SetColumnGrid.Column 附加属性的值设置为指定的 FrameworkElement
公共方法静态成员SetColumnSpanGrid.ColumnSpan 附加属性的值设置为指定的 FrameworkElement
公共方法静态成员SetRowGrid.Row 附加属性的值设置为指定的 FrameworkElement
公共方法静态成员SetRowSpanGrid.RowSpan 附加属性的值设置为指定的 FrameworkElement
公共方法SetValueDependencyObject 设置依赖项属性的本地值。 (从 DependencyObject 继承。)
公共方法ToString返回一个字符串,它表示当前的对象。 (从 Object 继承。)
公共方法TransformToVisual返回一个变换对象,该变换对象可用于将 UIElement 中的坐标变换为指定的对象。 (从 UIElement 继承。)
公共方法UpdateLayout请确保 UIElement 的所有子对象位置都正确地进行了布局更新。 (从 UIElement 继承。)
返回顶部

  名称说明
公共事件BindingValidationError在绑定源报告数据验证错误时发生。 (从 FrameworkElement 继承。)
公共事件DoubleTap当悬停在此 UIElement 上时使用了DoubleTap 笔势的情况下发生。 (从 UIElement 继承。)
公共事件GotFocusUIElement 收到焦点时发生。 (从 UIElement 继承。)
公共事件Hold当悬停在此 UIElement 上时使用了 Hold 笔势的情况下发生。 (从 UIElement 继承。)
公共事件KeyDownUIElement 具有焦点的情况下按下键盘上的某个键时发生。 (从 UIElement 继承。)
公共事件KeyUpUIElement 具有焦点的情况下释放键盘上的某个键时发生。 (从 UIElement 继承。)
公共事件LayoutUpdated当 Windows Phone 可视化树的布局更改时发生。 (从 FrameworkElement 继承。)
公共事件Loaded当已构造 FrameworkElement 并将其添加到对象树中时发生。 (从 FrameworkElement 继承。)
公共事件LostFocusUIElement 失去焦点时发生。 (从 UIElement 继承。)
公共事件LostMouseCaptureUIElement 失去触摸屏输入捕获时发生。 (从 UIElement 继承。)
公共事件ManipulationCompleted对于 UIElement 的操作和延时完毕时发生。 (从 UIElement 继承。)
公共事件ManipulationDelta当输入设备在操作期间更改位置时发生。 (从 UIElement 继承。)
公共事件ManipulationStarted当输入设备对 UIElement 开始操作时发生。 (从 UIElement 继承。)
公共事件MouseEnter当在 UIElement 界定区域内点按屏幕时发生。 (从 UIElement 继承。)
公共事件MouseLeave当在 UIElement 界定区域外发生触摸事件时发生。 (从 UIElement 继承。)
公共事件MouseLeftButtonDown在点按 UIElement 时发生。 (从 UIElement 继承。)
公共事件MouseLeftButtonUp当手指抬离 UIElement 时(或当 UIElement 具有触摸输入捕获时)发生。 (从 UIElement 继承。)
公共事件MouseMove在以下情况下发生:当触摸 UIElement 时(或当 UIElement 具有触摸输入捕获时),手指的坐标位置位于屏幕上。 (从 UIElement 继承。)
公共事件MouseWheel基础结构。 在以下情况下发生:当鼠标指针悬停在 UIElement 上时或 UIElement 具有焦点时,用户滚动鼠标滚轮。 (从 UIElement 继承。)
公共事件SizeChangedFrameworkElement 上的 ActualHeightActualWidth 属性的值发生更改时发生。 (从 FrameworkElement 继承。)
公共事件Tap当悬停在此 UIElement 上时使用了 Tap 笔势的情况下发生。 (从 UIElement 继承。)
公共事件TextInput在 UI 元素以与设备无关的方式获取文本时发生。 (从 UIElement 继承。)
公共事件TextInputStart在 UI 元素以与设备无关的方式最初获取文本时发生。 (从 UIElement 继承。)
公共事件TextInputUpdate当通过输入方法编辑器 (IME) 继续编写文本时发生。 (从 UIElement 继承。)
公共事件Unloaded当此对象不再与主对象树连接时发生。 (从 FrameworkElement 继承。)
返回顶部

  名称说明
公共字段静态成员ColumnProperty标识 Column 依赖项属性。
公共字段静态成员ColumnSpanProperty标识 ColumnSpan 依赖项属性。
公共字段静态成员RowProperty标识 Row 依赖项属性。
公共字段静态成员RowSpanProperty标识 RowSpan 依赖项属性。
公共字段静态成员ShowGridLinesProperty标识 ShowGridLines 依赖项属性。
返回顶部

网格为启用复杂布局的 Panel 元素之一。默认情况下,Grid 包含一行和一列。若要定义多个行和列,请使用 ColumnDefinitionsRowDefinitions 集合。RowDefinitionsColumnDefinitions 集合中的每个 RowDefinitionColumnDefinition 对象都定义一个行或列。RowDefinitionColumnDefinition 对象还使用 GridLength 对象来定义每个行和列的大小。有关每种单位类型的定义,请参见 GridUnitType

可以通过使用 Grid.Column 和 Grid.Row 附加属性,在 Grid 的特定单元格中定位对象。

列和行可以利用 Star 缩放来按比例分配剩余空间。当选择 Star 作为行或列的高度或宽度时,该行或列将得到一个剩余可用空间的加权比例分配。Star 大小调整是默认行为。

下图显示了一个网格,其中前两行的高度设置为 *,最后一行的高度为 2*。

Shows 3 rows of a Grid with Star sizing

列和行可以使用 Auto 大小调整,基于列或行中所含内容的大小均匀分配空间。下图显示了 3 个使用 Auto 大小调整的列。

3 columns in a Grid with Auto sizing

使用 RowSpanColumnSpan 附加属性可以使内容跨多个行和列。

设置网格中子元素的 Margin 属性将会设置该元素与其网格单元格边界之间的距离。HorizontalAlignmentVerticalAlignment 属性描述应如何在网格单元格中定位子元素。您可以通过使用 Margin 属性与对齐属性的组合来精确定位 Grid 的子元素。

Grid 的子元素按其在标记或代码中出现的顺序绘制。因而,当各元素共享相同的坐标时,便可以获得分层的顺序(也称为 z 顺序)。有关 z 顺序的更多信息,请参见ZIndex

下表概括了 Windows Phone 提供的其他可用布局容器。

面板名称

说明

Canvas

定义一个区域,在此区域内,您可以使用 X 和 Y 值显式定位子元素。

StackPanel

将子元素排列成一行(可沿水平或垂直方向)。

在需要不可能使用任一预定义的 Panel 元素来实现的应用程序布局的情况下,自定义布局行为可以通过以下方式来实现:从 Panel 继承并使用 MeasureOverrideArrangeOverride 方法重写默认度量和排列行为。

下面的代码示例演示如何使用 Grid 设计布局。


<Grid x:Name="LayoutRoot" Background="#555555" Width="480" Height="400" ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="350" />
        <ColumnDefinition Width="130" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="2*" />
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="10" FontWeight="Bold" Text="Contoso Corporation" HorizontalAlignment="Center" VerticalAlignment="Center" />
    <Grid x:Name="FormLayoutGrid" Grid.Row="1" Grid.Column="0" ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Grid.Column="0" Text="First" Margin="4" HorizontalAlignment="Left" VerticalAlignment="Center" />
        <TextBox Grid.Row="0" Grid.Column="1" Margin="4" />
        <TextBlock Grid.Row="1" Grid.Column="0" Text="Last" Margin="4" HorizontalAlignment="Left" VerticalAlignment="Center" />
        <TextBox Grid.Row="1" Grid.Column="1" Margin="4" />
        <TextBlock Grid.Row="2" Grid.Column="0" Text="Addr" Margin="4" HorizontalAlignment="Left" VerticalAlignment="Center" />
        <TextBox Grid.Row="2" Grid.Column="1" Margin="4" />

    </Grid>
</Grid>



    public Page()
    {
        InitializeComponent();
        LayoutDesign();
    }

    private void LayoutDesign()
    {
        //Create Stackpanel for ListBox Control and its description
        StackPanel DeptStackPanel = new StackPanel();
        DeptStackPanel.Margin = new Thickness(10);

        LayoutRoot.Children.Add(DeptStackPanel);
        Grid.SetColumn(DeptStackPanel, 1);
        Grid.SetRow(DeptStackPanel, 1);

        TextBlock DeptListHeading = new TextBlock();
        DeptListHeading.Text = "Department";

        ListBox DeptList = new ListBox();
        DeptList.Items.Add("Finance");
        DeptList.Items.Add("Marketing");
        DeptList.Items.Add("Human Resources");
        DeptList.Items.Add("Payroll");

        DeptStackPanel.Children.Add(DeptListHeading);
        DeptStackPanel.Children.Add(DeptList);

        //Create StackPanel for buttons
        StackPanel ButtonsStackPanel = new StackPanel();
        ButtonsStackPanel.Margin = new Thickness(10);
        ButtonsStackPanel.Orientation = System.Windows.Controls.Orientation.Horizontal;
        ButtonsStackPanel.HorizontalAlignment = HorizontalAlignment.Center;

        LayoutRoot.Children.Add(ButtonsStackPanel);
        Grid.SetColumn(ButtonsStackPanel, 0);
        Grid.SetRow(ButtonsStackPanel, 2);
        Grid.SetColumnSpan(ButtonsStackPanel, 2);

        Button BackButton = new Button();
        BackButton.Content = "Back";
        BackButton.Height = 72;
        BackButton.Width = 140;

        Button CancelButton = new Button();
        CancelButton.Content = "Cancel";
        CancelButton.Height = 72;
        CancelButton.Width = 140;

        Button NextButton = new Button();
        NextButton.Content = "Next";
        NextButton.Height = 72;
        NextButton.Width = 140;

        ButtonsStackPanel.Children.Add(BackButton);
        ButtonsStackPanel.Children.Add(CancelButton);
        ButtonsStackPanel.Children.Add(NextButton);

        BackButton.Margin = new Thickness(10);
        CancelButton.Margin = new Thickness(10);
        NextButton.Margin = new Thickness(10);
    }
}


前面示例生成的输出结果与下图相似。

A complex Grid layout

Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

此类型的所有公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

显示:
© 2014 Microsoft