2014-07-03 105 views
1

我需要创建很多行和列才能正确管理我的自定义控件。所以我的问题是,如果可以达到与下面显示的代码相同的结果?以更干净的方式,这种感觉如此不切实际......创建多个行和列xaml

<Grid.ColumnDefinitions> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
     <ColumnDefinition></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition></RowDefinition> 
     <RowDefinition></RowDefinition> 
     <RowDefinition></RowDefinition> 
     <RowDefinition></RowDefinition> 
     <RowDefinition></RowDefinition> 
     <RowDefinition></RowDefinition> 
     <RowDefinition></RowDefinition> 
     <RowDefinition></RowDefinition> 
     <RowDefinition></RowDefinition> 
     <RowDefinition></RowDefinition> 
     <RowDefinition></RowDefinition> 
    </Grid.RowDefinitions> 
+0

不,这是唯一的方法。你可以重新组织你的网页,也许使用一些用户控件? –

+0

,或者您可以为网格创建子类并为您需要的行数和列数添加属性 –

+0

您可以改用''和''来缩短定义。你是否曾经需要定义你的定义的宽度和高度,或者它们应该总是默认的? – Default

回答

2

你可以看看AutoGrid的语法如下:

<AutoGrid RowCount="2" RowHeight="35" Columns="100,auto"> 
    <Label /> 
    <TextBox /> 
    <Label /> 
    <TextBox /> 
</AutoGrid> 
+0

哇,谢谢。正是我在找什么! =) – user3095715

+0

如果它帮助你,请将它标记为答案:) – Wouter

0

您可以使用attach属性并创建您的行为来实现相同。 Here就是这样的例子

0

你可以在后面的代码中做同样的事情,但通常你应该像你一样在XAML中这样做。

 // Add 10 Rows 
     for (int i = 0; i < 10; i++) 
     { 
      var height = GridLength.Auto; 
      if (i == 0) 
       height = new GridLength(1, GridUnitType.Star); 
      layoutGrid.RowDefinitions.Add(new RowDefinition() 
      { 
       Height = height 
      });  
     } 

     // Add 7 Columns 
     for (int i = 0; i < 7; i++) 
     { 
      var width = GridLength.Auto; 
      if (i == 0) 
       width = new GridLength(1, GridUnitType.Star); 
      layoutGrid.ColumnDefinitions.Add(new ColumnDefinition() 
      { 
       Width = width 
      }); 
     } 
0

另一种方法来自动栅格的沃特的回答是ApexGrid。该代码看起来非常类似于AutoGrid。

<apex:ApexGrid Rows="Auto,*" Columns="100,Auto"> 
    <Label Grid.Row="0" Grid.Column="0" /> 
    <TextBox Grid.Row="0" Grid.Column="1" /> 
    <Label Grid.Row="1" Grid.Column="0" /> 
    <TextBox Grid.Row="1" Grid.Column="1" /> 
</apex:ApexGrid>