【发布时间】:2013-06-16 20:10:45
【问题描述】:
可以将附加的依赖属性值传播到模板化的孩子吗?
示例:尝试将 TagCloudService.* 属性传播到 ItemTemplate
<ItemsControl x:Name="myItemsControl"
pages:TagCloudService.MaximumFontSize="20"
pages:TagCloudService.MaximumFontWeight="800"
pages:TagCloudService.MinimumFontSize="10"
pages:TagCloudService.MinimumFontWeight="400"
pages:TagCloudService.NumberOfSizes="5"
pages:TagCloudService.TagFrequency="{Binding Hotttnesss}"
pages:TagCloudService.TagWeight="{Binding Weight}"
Template="{StaticResource TagCloudItemsControlTemplate}">
<ItemsControl.ItemTemplate>
<StaticResource ResourceKey="TermTagCloudTemplate" />
</ItemsControl.ItemTemplate>
</ItemsControl>
这里是项目模板,其中定义了一些默认值但应该被覆盖:
<DataTemplate x:Key="TermTagCloudTemplate" DataType="api:Term">
<TextBlock Foreground="DodgerBlue"
Padding="10"
Style="{StaticResource TagCloudTextBlockStyle}"
Text="{Binding Name}"
pages:TagCloudService.MaximumFontSize="30"
pages:TagCloudService.MaximumFontWeight="800"
pages:TagCloudService.MinimumFontSize="20"
pages:TagCloudService.MinimumFontWeight="400"
pages:TagCloudService.NumberOfSizes="5"
pages:TagCloudService.TagFrequency="{Binding Frequency}"
pages:TagCloudService.TagWeight="{Binding Weight}">
</TextBlock>
</DataTemplate>
我尝试设置 FrameworkPropertyMetadataOptions.OverridesInheritanceBehavior 而不是 .Inherits,尝试在模板中注释默认值但属性未传播。
这可能吗,还是我应该为该控件创建另一个 ItemTemplate ?
【问题讨论】:
-
我已经读过了。
-
某位天才找到了解决方案! stackoverflow.com/a/4249829/361899
-
下面的解决方案是否失效?
-
是的,没有从父级获取值。还有一个问题是最后两个绑定。