从后端/定位元素访问xaml grid.column

时间:2014-09-30 17:39:02

标签: windows-phone-8 windows-phone windows-phone-8.1

<Grid x:Name="gv">
     <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
     </Grid.ColumnDefinitions>
     <TextBlock x:Name="aaa" Text="asd" Height="40" Grid.Column="0"/>
</Grid>

所以基本上我在后端创建了一个元素,并希望将它添加到第1列的gv网格中,我应该怎么做?

TextBlock frName = new TextBlock();
frName.Text = "123";
gv.Children.Add(frName);

在xaml中,它看起来像我猜的

<TextBlock Text="123" Height="40" Grid.Column="1"/>

我无法在文档中找到任何属性或任何注释,以确定如何放入所需的列。

的PS。

我也在后端创建网格列定义,但我发现它很容易完成,不确定我是否以合理的方式完成。

Grid tg = new Grid();
GridLength cw = new GridLength(70); 
ColumnDefinition cd;
for (int i = 0; i < 4; i++) {
    cd = new ColumnDefinition();
    cd.Width = cw;
    tg.ColumnDefinitions.Add(cd);
}  

1 个答案:

答案 0 :(得分:1)

Grid.RowGrid.Column(以及Canvas.Left和Canvas.Top)是附加属性。它们由容器类(Grid或Canvas)声明,而不是由它们设置的DependencyObject声明。请参阅MSDN上的Attached properties overview

要在代码中设置附加属性,请使用SetValue方法和属性的标识符。 GetValue将返回该属性。

frName.SetValue(Grid.ColumnProperty,1);

创建网格及其列的代码基本上是正确的。您仍然需要将它添加到可视树中的容器,类似于使用gv.Children.Add(frName)添加frName的方式