【问题标题】:Itemscontrol to position items horizontally and make children stretch to stackpanel widthItemscontrol 水平放置项目并使子项拉伸到堆栈面板宽度
【发布时间】:2012-02-24 13:05:15
【问题描述】:

我正在创建一个类似控件的网格,并且我正在使用一个 itemscontrol 来表示一行,并使用另一个 itemscontrol 来将这些行放在一起。在一行中,这些项目是水平放置的,因此我使用具有如下水平方向的 StackPanel:

<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 采用其父级的大小,并且会发生这种情况。但我也希望 itemscontrol 中的所有子项(将 stackpanel 作为 itemspanel)占据其父项的全部宽度。但这不会发生。

我读过这也是堆栈面板的默认行为。

我的问题:

1) 有没有办法让我的文本框(子级)占据我的堆栈面板(父级)的整个宽度?我不知道堆栈面板将包含多少项,所以我无法为文本框指定默认宽度。

2) 还有其他可以表示二维数据的吗? (我正在使用 silverlight 4 MVVM)

提前致谢。

【问题讨论】:

  • 如果我们退后一步,你会说网格的约束是什么?你想固定列数,行数吗?你想让它滚动吗?是否要修复单元格大小?
  • @Slugart:网格会限制我使用动态行和列。我不想在网格中定位每个项目,因为我不知道那里会有多少项目:它可以是 3x3 或 9x9。
  • 我猜你不希望网格滚动,而是统一调整单元格的大小?
  • @Slugart:确实,所有单元格最好具有相同的尺寸。
  • DataGrid 有问题吗? msdn.microsoft.com/en-us/library/…

标签: mvvm silverlight-4.0 orientation stackpanel


【解决方案1】:

在此处查看用于 SL 控件的 UniformGrid:http://www.jeff.wilcox.name/2009/01/uniform-grid/

来自 MSDN 的 UniformGrid 的定义:“提供了一种在网格中排列内容的方法,其中网格中的所有单元格都具有相同的大小。”

如果您希望将其绑定到可观察集合,只需将 UniformGrid 放在 ItemsControl 的 ItemsPanelTemplate 中,因为 UniformGrid 扩展了 Panel。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多