【问题标题】:Add Element to Grid and set its Row Windows Phone将元素添加到网格并设置其行 Windows Phone
【发布时间】:2014-04-15 23:00:17
【问题描述】:

假设您想使用以下代码向 Grid 添加一个新元素:

ExpanderView newExpander = new ExpanderView();
newExpander.Name = name;
newExpander.Header = header;
newExpander.FontSize = 40;

if (row == 0)
    newExpander.IsExpanded = true;

foreach (Item li in items)
{
     CheckBox tb = new CheckBox();
     tb.Content = content;
     tb.FontSize = 20;

     newExpander.Items.Add(tb);
}


MyGrid.Children.Add(newExpander);
Grid.SetRow(newExpander, row);

现在是 xaml 中的网格:

<Grid x:Name="MyGrid">
                        <Grid.RowDefinitions>
                            <RowDefinition></RowDefinition>
                            <RowDefinition></RowDefinition>
                            <RowDefinition></RowDefinition>
                            <RowDefinition></RowDefinition>
                        </Grid.RowDefinitions>
                    </Grid>

现在是cs代码部分的最后一行Grid.SetRow(newExpander, row),
如果 .xaml 代码中有多个网格,如何告诉它要为哪个网格设置新行?

【问题讨论】:

    标签: xaml


    【解决方案1】:

    以下代码

    Grid.SetRow(newExpander, row);
    

    仅在对象属性中的 row 为 1 时设置 Grid.Row="1"

    要使用此属性,包含该对象的网格必须设置为 RowDefinitions

    如果 .xaml 代码中有多个网格,如何告诉它要为哪个网格设置新行?

    您无需说明,因为该对象仍保留在您添加的网格中。
    当您更改属性Grid.Row 时,它仅设置在网格的女巫行上,您的控件将被渲染

    【讨论】:

    • 我明白你在说这个例子。我想我的问题更笼统,因为我现在考虑一下,如果你有一个 4 列乘 2 行的网格。我使用“MyGrid”的网格名称设置子元素,但使用通用的“Grid”windows phone 控件名称来设置行或列。因此,如果我有“MyGrid1”、“MyGrid2”、“MyGrid3”,您将如何仅使用“Grid.Row”确定您为特定网格设置的行或列?
    • 你在使用多个网格吗?
    • 是的,但对于显示的示例,我真的不需要指定行,因为每一行将只包含一列。我的最后一个问题只是一个一般性的询问,以防万一在构建过程中,我遇到了一个设计场景,我想在每行合并多个列。
    • 您可以检查 Parent 属性以了解您在哪个 Grid 中添加了您正在谈论的控件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多