1

プログラムでレイアウト(XAML)を生成するにはどうすればよいですか?

ある種のループがあるとしましょう。そして、それぞれの後に、私が得た値でこれを生成したいと思います:

                <Grid Height="150" Name="grid1">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition Width="200" />
                    </Grid.ColumnDefinitions>
                    <Image Height="150" Name="image1" Stretch="Fill" Width="200" Grid.Column="1" Source="/Ilm;component/Images/testicon.png" HorizontalAlignment="Right" VerticalAlignment="Top" />
                    <TextBlock Height="51" Name="textBlock1" Text="Paris" Margin="12,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="40" />
                    <TextBlock FontSize="40" Height="51" HorizontalAlignment="Left" Margin="13,75,0,0" Name="textBlock2" Text="19°C" VerticalAlignment="Top" />
                </Grid>
4

2 に答える 2

5

グリッドに新しい行を追加するには、新しい行定義を追加してから、新しいコントロールを追加する必要があります。これは、次のロジックに似ています。

rowNumber = 0; // Set the current row that you are adding 
grid1.RowDefinitions.Add(new RowDefinition());

Image img = new Image();
img.Height = 150;
img.Name = "image1";
img.Stretch = Stretch.Fill;
img.Width = 200;
img.HorizontalAlignment = HorizontalAlignment.Right;
img.VerticalAlignment = VerticalAlignment.Top;
// Set your image properties
img.SetValue(Grid.RowProperty, rowNumber);
img.SetValue(Grid.ColumnProperty, 1);
grid1.Children.Add(img);

TextBlock tb1 = new TextBlock();
// Set your text block properties
tb1.SetValue(Grid.RowProperty, rowNumber);
tb1.SetValue(Grid.ColumnProperty, 0);
grid1.Children.Add(tb1);

TextBlock tb2 = new TextBlock();
// Set your text block properties
tb2.SetValue(Grid.RowProperty, rowNumber);
tb2.SetValue(Grid.ColumnProperty, 0);
grid1.Children.Add(tb2);

設定したいプロパティをコメントがある場所に配置し、正しい行番号(ゼロベース)を指定する必要があります。

全部追加するには...

Grid grid1 = new Grid();
grid1.Height = 150;
grid1.Name = "grid1";
parentControl.Children.Add(grid1); // Note: parentControl is whatever control you are added this to
grid1.ColumnDefinitions.Add(new ColumnDefinition());
grid1.ColumnDefinitions.Add(new ColumnDefinition { Width = 200});

// From here insert the code for adding a row that is provided above

以上です。私が提供していないプロパティを入力する必要があります。変数parentControlが異なることに注意してください。これらを追加するコントロールを提供していないため、それが何になるかは不明です。

于 2012-05-09T13:49:51.777 に答える
2

1つのオプションは、提案されているように、すべてのコードをコードビハインドに六角形として配置することです。

もう1つのオプションであり、より一般的なのは、ItemsControlを使用することです。これにより、コードビハインドではなくXAMLに視覚的なレイアウトを残すことで、責任をより明確に分離できます。

于 2012-05-09T13:57:16.993 に答える