我創建了一個像控件一樣的網格,並且我使用itemscontrol來表示一行,另一個itemcontrol將這些行放在一起。Itemscontrol水平定位項目,並使子項伸展到堆疊面板寬度
<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中的所有子項(使用stackpanel作爲項目面板)佔用其父項的全部寬度。但是這並沒有發生。
我讀過這也是一個stackpanel的默認行爲。
我的問題:
1)是否有佔用我的StackPanel(父)的整個寬度沒有辦法讓我的文本框(孩子)?我不知道堆棧面板將包含多少項目,所以我不能給文本框設置默認寬度。
2)是否有其他用於表示2D數據的內容? (我正在使用silverlight 4 MVVM)
在此先感謝。
如果我們退後一步,你會說網格的約束是什麼?你想要固定的列數,行數?你想滾動嗎?你想修正單元格大小嗎? – Slugart 2012-02-24 13:18:42
@Slugart:網格會限制我使用動態的行和列。我不想在網格中放置每件物品,因爲我不知道這裏有多少物品:它可以是3x3或9x9。 – Terry 2012-02-24 13:22:00
我猜你不希望網格滾動,而是調整一致的單元格? – Slugart 2012-02-24 13:24:20