GridColumnDefinition是属性,但它像一个类型一样使用

时间:2018-03-10 19:48:47

标签: c# wpf visual-studio xaml

我正在尝试在WPF中编写自动创建堆栈面板的代码,但我不知道如何在代码cs中定义行或列。

XAML:

<StackPanel  Orientation="Vertical" HorizontalAlignment="Left" Height="221"  VerticalAlignment="Top" Width="459" Margin="115,111,0,0">
        <Grid Height="auto" >
            <Grid.RowDefinitions>
                <RowDefinition Height="60"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="153"/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Label Grid.Column="0" Grid.Row="0"  Content="Nom Commercial" FontSize="10" FontStyle="Italic"  FontWeight="Bold"   />
            <Label Grid.Column="1" Grid.Row="0" Content="prix "   FontSize="10" FontStyle="Italic" FontWeight="Bold"/>
            <Label Grid.Column="2" Grid.Row="0" Content="Quantité"   FontSize="10" FontStyle="Italic" FontWeight="Bold"/>
        </Grid> 

背后的代码:

public void creat_stackpanel()
{ 
  StackPanel myStackPanel = new StackPanel; 
  Grid mygrid= new Grid(); 
  Grid.RowDefinition grd= new Grid.RowDefinition(); 
  RowDefinition rd=new RowDefinition(); 
  Grid.ColumnDefinitions gcd=new Grid.ColumnDefinitions(); 
  ColumnDefinition cd=new ColumnDefinition(); 
  Label mylabel1=new Label(); 
  mylabel1.Grid.column =0; 
  mylabel1.Grid.Row=0; 
  mylabel1.Content="Nom Commercial"; 
  myStackPanel.Children.Add(mygrid); 
  myStackPanel.Children.Add(mylabel1); 
  this.Content = myStackPanel; 
}

1 个答案:

答案 0 :(得分:1)

RowDefinitions是网格的RowDefinitionCollection属性,因此您必须向此集合添加新的RowDefinition实例。这是一个小样本:

        Grid mygrid = new Grid();
        RowDefinition rd = new RowDefinition();
        mygrid.RowDefinitions.Add(rd);
        ColumnDefinition cd = new ColumnDefinition();
        mygrid.ColumnDefinitions.Add(cd);

        Label mylabel1 = new Label();
        mylabel1.Content = "Nom Commercial";

        Grid.SetColumn(mylabel1, 0);
        Grid.SetRow(mylabel1, 0);

        mygrid.Children.Add(mylabel1);
        myStackPanel.Children.Add(mygrid);

和xaml部分:

<StackPanel x:Name="myStackPanel"/>