包含Binding内容的网格

时间:2011-07-30 03:58:28

标签: wpf xaml

我有一个基于输入参数生成网格的库。网格可能包含基于输入的不同控件。我想创建一个ListBox,其中每个列表项将获得自己生成的Grid。这可行吗?我无法找到任何面向Panel的内容(Gird,StackPanel等),例如像Button一样公开Content属性。

2 个答案:

答案 0 :(得分:0)

如何传递数据以构建网格?

我假设您有一个通过依赖属性接收数据的控件。即你有类似MyControl.MyData属性的东西,其中MyData是一个依赖属性。在这种情况下,请尝试使用DataTemplate。

创建一个ObservableCollection,其中每个项目都是您需要传递的数据,以便构建网格。

在ListBox的实例上,定义ItemTemplate以使用由您的控件组成的DataTemplate。

<ListBox>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <myAssembly:MyControl MyData="{Binding }"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

答案 1 :(得分:0)

@XAMeLi的答案几乎是正确的 - 更好的是 DataTemplateSelector ,这样每个数据项都可以有不同的模板(或生成的网格)。在扩展DataTemplateSelector的类中,您可以轻松生成或加载适当的网格布局,作为单独的控件或动态DataTemplate。

查看这篇文章以获得一个很好的例子:WPF Tutorial - How To Use A DataTemplateSelector