【发布时间】:2016-02-19 17:08:11
【问题描述】:
我有一个项目控制模板,如下所示。对于模板中的每个项目,我需要单独的 colorProvider 实例。项目控件中的每个项目都需要一个单独的颜色提供程序实例,具体取决于它所绑定的项目。 如何创建静态资源的多个副本,以便静态资源仅可用于该项目。
<ItemsControl x:Name="itemsControl" ItemsSource="{Binding DataList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid MinHeight="250">
<ContentPresenter Content="{Binding }" ContentTemplateSelector="{StaticResource chartSelector}">
<ContentPresenter.Resources>
<v:ColorProvider x:Key="colorProvider"/>
</ContentPresenter.Resources>
</ContentPresenter>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
【问题讨论】:
-
colorProvider 资源永远不会在您的代码中使用。请描述您打算如何使用此资源。
-
它是从将在 contentpresenter 中加载的模板中引用的。然而,作为一种解决方法,我设法使用控制标记对象来获取对应该初始化颜色提供程序的数据的引用。
-
听起来像x:Shared="False" case。
标签: c# wpf xaml staticresource