我正在尝试在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;
}
答案 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"/>