2

我试图弄清楚是否有办法将控件动态添加到另一个控件中(我知道这有点含糊......)。我的程序在 C# 4.0 和 WPF 中。基本上,我正在尝试创建一个数据网格,但与拥有普通类型的“单元格”(即文本、超链接等)相反,我需要每个单元格来保存许多项目。我认为这在数据网格中是不可能的,所以我正在尝试执行以下操作:使用堆栈面板,添加可变数量的包装面板。每个包装面板将包含 7 个网格,每个网格将保存我想要的数据(我可能会使用一些用户控件来代替我认为的网格......)

我到目前为止的代码示例...

            <StackPanel Height="559" HorizontalAlignment="Left" Margin="24,11,0,0" Name="tyStackPanel" VerticalAlignment="Top" Width="783">
                <WrapPanel Height="100">
                    <Grid Width="100" Height="100">

                    </Grid>
                </WrapPanel>
                <WrapPanel Height="100">

                </WrapPanel>
            </StackPanel>

有没有办法创建可变数量的包裹面板?(即,就像您在数据网格中有可变数量的行一样)

非常感谢任何帮助和建议!

PS图我应该解释一下我想要更好地实现的目标。我有一个项目集合,每个项目都有 5 个我想一起显示的属性。这些项目按名称(如数据列中的一行)和列标题(不是 5 个属性之一)分组。我想按 (Name, ColumnHeader) 对对集合进行分组,然后在每个“单元格”中显示这 5 个属性。在我尝试在上面进行设置的方式中,每个“名称”都有一个 WrapPanel,每个 ColumnHeader 都包含一个单元格/网格。

4

1 回答 1

2

WPF supports this very well with the ItemsControl and its various derived controls, one of which is the DataGrid, which actually does support the scenario you're looking for.

Basically, when you use an ItemsControl, DataGrid or one of these item controls, you bind the ItemsSource to whatever property holds your data items, and define the DataTemplates for each item, which can be any arbitrarily-complex block of XAML. For DataGrid, you can swap a normal column for a DataGridTemplateColumn, which can, again, be as complex as you want.

Check out the Data Templating Overview for, well, an overview.

于 2012-04-27T17:18:28.040 回答