2016-03-17 5 views
1

Я хочу добавить сетку и ее содержимое во время выполнения. Сетка состоит в следующем. Как я могу добавить это из кода?Динамически добавить сетку UWP

<Grid Width="200" Height="50" Margin="0,50,0,0"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <CheckBox Grid.Column="0" Name="chkBox" MinWidth="32" HorizontalAlignment="Left" Background="Transparent"/> 
    <TextBlock Grid.Column="1" Text="Name" FontSize="16" HorizontalAlignment="Left" VerticalAlignment="Center"/> 
    <TextBox Grid.Column="2" Name="txtBx" FontSize="16" HorizontalAlignment="Right" VerticalAlignment="Center"/> 
</Grid> 
+2

Подумайте о создании пользовательского элемента управления, чтобы получить все преимущества XAML дизайна, и просто добавить/удалить элемент управления динамически с помощью нескольких строк кода вместо из многих, многие из них в противном случае. –

+0

Я согласен с подходом UserControl. И вы назвали элементы управления в своем xaml. Это означает, что вы можете иметь привязку, анимацию, адаптивный триггер и т. Д., Ссылаясь на эти элементы из других частей вашего xaml или вашего кода. – terry

ответ

7
Grid grid = new Grid(); 
      grid.Width = 200; 
      grid.Height = 50; 
      grid.Margin = new Thickness(0, 50, 0, 0); 
      ColumnDefinition col1 = new ColumnDefinition(); 
      ColumnDefinition col2 = new ColumnDefinition(); 
      ColumnDefinition col3 = new ColumnDefinition(); 
      col1.Width = new GridLength(0, GridUnitType.Auto); 
      col2.Width = new GridLength(0, GridUnitType.Auto); 
      col3.Width = new GridLength(1, GridUnitType.Star); 
      grid.ColumnDefinitions.Add(col1); 
      grid.ColumnDefinitions.Add(col2); 
      grid.ColumnDefinitions.Add(col3); 
      CheckBox cbox = new CheckBox(); 
      cbox.MinWidth = 32; 
      cbox.HorizontalAlignment = HorizontalAlignment.Left; 
      cbox.Background = new SolidColorBrush(Windows.UI.Colors.Transparent); 
      TextBlock tblock = new TextBlock(); 
      tblock.FontSize = 16; 
      tblock.HorizontalAlignment = HorizontalAlignment.Left; 
      tblock.VerticalAlignment = VerticalAlignment.Center; 
      tblock.Text = "text"; 
      TextBox tbox = new TextBox(); 
      tbox.FontSize = 16; 
      tbox.HorizontalAlignment = HorizontalAlignment.Left; 
      tbox.VerticalAlignment = VerticalAlignment.Center; 
      grid.Children.Add(cbox); 
      grid.Children.Add(tblock); 
      grid.Children.Add(tbox); 
      Grid.SetColumn(cbox, 0); 
      Grid.SetColumn(tblock, 1); 
      Grid.SetColumn(tbox, 2); 
1
<StackPanel Margin="0 10 0 0" Height="100" BorderBrush="Black" BorderThickness="1" Name="signBoardStackPanel">            </StackPanel> 

код за

private void GenerateGrid() 
     { 
      StackPanel brickStackPanel = new StackPanel(); 
      brickStackPanel.BorderThickness = new Thickness(1, 1, 1, 1); 
      brickStackPanel.BorderBrush = new SolidColorBrush(Colors.Gray); 

      for (int bx = 0; bx < 8; bx++) 
      { 
       StackPanel rowStackPanel = new StackPanel(); 
       rowStackPanel.Orientation = Orientation.Horizontal; 
       for (int by = 0; by < 12; by++) 
       { 

        Ellipse pixel = new Ellipse(); 
        pixel.Fill = new SolidColorBrush(Colors.Gray); 
        pixel.Height = 4; 
        pixel.Width = 4; 
        //pixel.Stroke = new SolidColorBrush(Colors.Black); 
        rowStackPanel.Children.Add(pixel); 

        Rectangle pixel1 = new Rectangle(); 
        pixel1.Fill = new SolidColorBrush(Colors.White); 
        pixel1.Height = 1; 
        pixel1.Width = 1; 
        rowStackPanel.Children.Add(pixel1); 

       } 
       brickStackPanel.Children.Add(rowStackPanel); 
      } 


      signBoardStackPanel.Children.Clear(); 
      signBoardStackPanel.Children.Add(brickStackPanel); 


     } 
Смежные вопросы