2015-04-30 3 views
1

Я пытаюсь создать простую сетку в приложении Windows 8 Universal. Ниже моя цель.GridView или Grid Windows 8.1

Row1Col1 Row1Col2 Row1Col3

Row2Col1 Row2Col2 Row2Col3

Row3Col1 Row3Col2 Row3Col3

<Grid x:Name="Grid1" HorizontalAlignment="Left" Height="217" Margin="557,135,0,0" Grid.Row="1" VerticalAlignment="Top" Width="433"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="1*"/> 
      <RowDefinition Height="1*"/> 
      <RowDefinition Height="1*"/> 
     </Grid.RowDefinitions> 
     <Grid.Background> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="Black" Offset="0"/> 
       <GradientStop Color="White" Offset="1"/> 
      </LinearGradientBrush> 
     </Grid.Background> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
      <ColumnDefinition Width="1*"/> 
     </Grid.ColumnDefinitions> 
    </Grid> 

Я хотел бы создать даже разнесенные строки и столбцы в XAML и добавить текстовые метки в коде.

Что-то вроде:

Grid.Row1.Col1.Text = "Row1Col1"; Grid.Row1.Col2.Text = "Row1Col2";

Короткий фрагмент XAML и фрагмент кода C# были бы полезны.

Вот мой xaml до сих пор.

Любая помощь приветствуется.

ответ

1

Чтобы добавить текст в различных ячеек в сетке я добавил TextBlocks и поместили их соответствующим образом:

<Page.Resources> 
    <Style TargetType="TextBlock"> 
     <Setter Property="FontSize" Value="40"/> 
    </Style> 
</Page.Resources> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid.RowDefinitions> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
    <TextBlock Name="r1c1" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    <TextBlock Name="r1c2" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    <TextBlock Name="r1c3" Grid.Row="0" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    <TextBlock Name="r2c1" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    <TextBlock Name="r2c2" Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    <TextBlock Name="r2c3" Grid.Row="1" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    <TextBlock Name="r3c1" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    <TextBlock Name="r3c2" Grid.Row="2" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
    <TextBlock Name="r3c3" Grid.Row="2" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
</Grid> 

В качестве примера, я изменил мой код позади на следующее:

private int N = 3; 
private TextBlock[,] gridText; 
public MainPage() 
{ 
    this.InitializeComponent(); 
    InitializeGridText(); 

    MethodThatChangesText(); 
} 

private void InitializeGridText() 
{ 
    gridText = new TextBlock[N, N]; 
    gridText[0, 0] = r1c1; 
    gridText[0, 1] = r1c2; 
    gridText[0, 2] = r1c3; 
    gridText[1, 0] = r2c1; 
    gridText[1, 1] = r2c2; 
    gridText[1, 2] = r2c3; 
    gridText[2, 0] = r3c1; 
    gridText[2, 1] = r3c2; 
    gridText[2, 2] = r3c3; 
} 

void MethodThatChangesText() 
{ 
    // Some Logic Here 

    for(int i = 0; i < N; i++) 
     for(int j = 0; j < N; j++) 
      gridText[i, j].Text = String.Format("Row{0}Col{1}", i + 1, j + 1); 
} 

В зависимости от того, что вы пытаетесь сделать, вы можете добавить свою собственную логику и вызвать этот метод в ответ на какое-либо событие (например, нажатие кнопки ...).

+0

Thanks Frank. Я надеялся немного более прямой способ назначить текст сетке, но на данный момент ваше решение работает. –

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