WPF中的ItemsControl / DataTemplate内没有样式继承?

时间:2016-12-01 09:18:22

标签: c# wpf xaml

任何人都可以解释为什么我的TextBlock中的DataTemplate不适用我的UserControl.Resources元素中定义的样式,但第二个TextBlock('测试B') ?

我认为这可能与设置为不继承的依赖属性有关,但我无法确定。

<UserControl.Resources>       
    <Style  TargetType="{x:Type TextBlock}">
        <Setter Property="Padding" Value="8 2" />
    </Style>
</UserControl.Resources>
<StackPanel>
    <ItemsControl ItemsSource="{Binding}">         
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <!--Padding does not apply--> 
                <TextBlock>Test A</TextBlock>
             </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
    <!--Padding applies-->
    <TextBlock>Test B</TextBlock>
</StackPanel>

1 个答案:

答案 0 :(得分:3)

模板被视为边界。模板中的元素属于此边界范围,并且在运行时查找具有匹配目标类型的样式在此范围内结束,因此TextBlock外部将拾取样式而内部不会。比如adminSoftDK说你应该give the style an x:Key and then apply it as static resource it will work。检查this