2012-05-09 7 views
1

プログラムによるレイアウト(XAML)の生成方法を教えてください。プログラムによるレイアウトの生成(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> 
+0

新しい行を追加するか、全体を生成しますか? – scottheckel

+0

私は必要なだけ多くのものを生成したい。 –

+0

私の答えは以下のとおりです。グリッドを追加するように更新しました。 – scottheckel

答えて

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は異なることに注意してください。あなたはこれらを追加するコントロールを提供していないので、それがどうなるかは不明です。

+0

"parentControl"にグリッドを追加しようとすると、 "パラメータが間違っています"と表示されます。あなたの長い答えのためにあなたよりもエラーを解決するために貴重なものは何もありません。ItemsControl instaedを探すべきかもしれません..これは私にとっては複雑すぎるので... –

+1

OK、1時間後に私はそれを得ました。私はあなたのコードを私のプロジェクトのために働かせました。あなたは上司、ベソです! –

2

コードビハインドのすべてのコードをHexxagonal as suggestedとして配置することもできます。

さらに別のオプションは、ItemsControlを使用することです。これにより、コードビハインドではなく、XAMLにビジュアルレイアウトを残すことで、より明確な責任の分離が可能になります。

+0

ええ、間違いなく。私は彼のプログラム的な方法が最善ではないと述べていたはずです。 – scottheckel

+0

疑いはありません。 OPがItemsControlを認識していない場合に備えて、そこに投げたかっただけです。 –

関連する問題