преобразовать этот язык UniformGrid XAML в C # - PullRequest
0 голосов
/ 25 апреля 2011

Привет всем, я хочу преобразовать этот код xaml в код c #, пожалуйста, помогите мне с помощью циклов для экономии памяти или строки, пожалуйста, помогите мне

<UniformGrid Width="500" Height="500" x:Name="ChessBoard" VerticalAlignment="Center" HorizontalAlignment="Center">
        <Grid x:Name="Grid1" Background="Yellow" />
        <Grid x:Name="Grid2" Background="Black" />
        <Grid x:Name="Grid3" Background="Yellow" />
        <Grid x:Name="Grid4" Background="Black" />
        <Grid x:Name="Grid5" Background="Yellow" />
        <Grid x:Name="Grid6" Background="Black" />
        <Grid x:Name="Grid7" Background="Yellow" />
        <Grid x:Name="Grid8" Background="Black" />
        <Grid x:Name="Grid9" Background="Yellow" />
    </UniformGrid>

пожалуйста

UniformGrid ChessBoard = new UniformGrid();
        ChessBoard.Width = 500;
        ChessBoard.Height = 500;
        ChessBoard.HorizontalAlignment = HorizontalAlignment.Center;
        ChessBoard.VerticalAlignment = VerticalAlignment.Center;
        Grid chressBox = new Grid();
        SolidColorBrush yell = new SolidColorBrush(Colors.Yellow);
        SolidColorBrush blk = new SolidColorBrush(Colors.Black);

        for (int ii = 1; ii <= 9; ii++)
        {
            if (ii % 2 == 0)
            {
                chressBox.Background = blk;
                chressBox.Name = "Grid" + ii.ToString();
                ChessBoard.Children.Add(chressBox);
            }
            else
            {
                chressBox.Background = yell;
                chressBox.Name = "Grid" + ii.ToString();
                ChessBoard.Children.Add(chressBox);
            }
        }
        LayoutRoot.Children.Add(ChessBoard);

Скореесоздать это, но все еще неправильно

1 Ответ

2 голосов
/ 25 апреля 2011

Для полной шахматной доски вы можете сделать что-то вроде этого

  Brush defaultBrush = new SolidColorBrush(Colors.Yellow);
  Brush alternateBrush = new SolidColorBrush(Colors.Black);

  for (int x = 0; x < 8; ++x)
  {
    for (int y = 0; y < 8; ++y)
    {
      Grid cell = new Grid();
      cell.Background = (y+x) % 2 == 0 ? defaultBrush : alternateBrush;
      ChessBoard.Children.Add(cell);
    }
  }

Вот версия с единственным циклом for

  Brush defaultBrush = new SolidColorBrush(Colors.Yellow);
  Brush alternateBrush = new SolidColorBrush(Colors.Black);

  for (int i = 0; i < 64; ++i)
  {
    Grid cell = new Grid();
    cell.Background = (i + i / 8) % 2 == 0 ? defaultBrush : alternateBrush;
    ChessBoard.Children.Add(cell);
  }

В этом коде предполагается, что ChessBoard определено как UniformGrid, как в вашем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...