如何使用XAML中的资源初始化只读项集合

时间:2011-07-21 13:32:23

标签: c# .net wpf xaml

假设我对readonly Items集合有一些控制权。我可以使用集合语法初始化此集合:

<Something>
    <Something.Items>
        <Item />
        <Item />
    </Something.Items>
</Something>

假设现在我有资源集合,并希望用它初始化我的控件:

<Window.Resources>
    <ItemCollectionClass x:Key="collection">
        <Item />
        <Item />
    </ItemCollectionClass>
</Window.Resources>

怎么做? <Something Items="{StaticResource collection}" />不起作用,因为它试图设置集合实例,而不是初始化它。

1 个答案:

答案 0 :(得分:2)

您可以使用ObjectDataProvider初始化集合:

<Window.Resources>
  <ItemCollectionClass x:Key="collection">
    <Item />
    <Item />
  </ItemCollectionClass>

  <ObjectDataProvider x:Key="..." ObjectType="{x:Type local:Something}">
    <ObjectDataProvider.ConstructorParameters>
      <StaticResource ResourceKey="collection" />
    </ObjectDataProvider.ConstructorParameters>
  </ObjectDataProvider>
</Window.Resources />