グリッドのようなコントロールを作成しています。私はitemscontrolを使って行を表し、別のitemscontrolを使ってそれらの行をまとめています。デフォルトではItemsコントロールを水平に配置し、子パネルをスタックパネルの幅に伸ばします。
<ItemsControl ItemsSource="{Binding CellRows}" Grid.Row="1" Grid.Column="1" Margin ="20">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Background="Cyan"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Content}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
が、私は私のStackPanelは親が持っているとそれが起こるのサイズをしたい:私はこのような水平方向でのStackPanelを使用して、行では、項目が水平に配置されています。しかし、私はitemscontrol(itemspanelとしてstackpanelを持つ)のすべての子供が親の全幅を占めるようにしたい。しかし、それは起こりません。
これは、スタックパネルのデフォルトの動作でもあります。
私の質問:
1)私のStackPanel(親)の全幅を取るために私のテキストボックス(子供を作るためにどのような方法が)ありますか?私はスタックパネルに何個のアイテムが含まれているのかわからないので、テキストボックスにデフォルトの幅を与えることはできません。
2)2Dデータを表現する他に何かありますか? (私はSilverlight 4 MVVMで作業しています)
ありがとうございます。
私たちが一歩前進すれば、グリッドの制約は何だと思いますか?列の数を固定するか、行数にしますか?それをスクロールしたいですか?セルサイズを修正しますか? – Slugart
@Slugart:グリッドは動的な行と列の使用を制限します。グリッド内のすべてのアイテムを配置する必要はありません。アイテムがいくつあるのかわからないので、3x3または9x9にすることができます。 – Terry
私はあなたがグリッドをスクロールするのではなく、セルを一様にサイズ変更したくないと思っていますか? – Slugart