c# - WPF 中的 ItemsControl/DataTemplate 内部没有样式继承?

标签 c# wpf xaml

谁能解释为什么我的 DataTemplate 中的 TextBlock 没有应用我的 UserControl.Resources 元素中定义的样式,而是第二个 TextBlock ('Test 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>

最佳答案

模板被视为边界。模板中的元素落在这个边界范围内,并在运行时查找具有匹配目标类型的样式结束在这个范围内,结果是外部的 TextBlock 将选择该样式,而内部的则不会。就像 adminSoftDK 说的那样,您应该给样式一个 x:Key,然后将其作为静态资源应用,它将起作用

关于c# - WPF 中的 ItemsControl/DataTemplate 内部没有样式继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40906655/

相关文章:

c# - Windows 窗体 - Tab 键在子面板中不起作用

c# - 在 Windows 窗体中使用相对路径从代码加载图像

wpf - 未在 WPF 中指定控件名称...性能效果

c# - ValidationRule ValidatesOnTargetUpdated NullReferenceException 在设计时

xaml - 调整应用程序大小时显示消息

c# - ServiceStack.Text 是否提供 JSON 的 pretty-print ?

c# - 附加XML字符串 block 保存文档

c# - APP.xaml 中带有事件的 XAML 外包数据模板

c# - 在 TestStack.White 中获取 CustomUIItem 的子项的 IUIItem[]

c# - 在C#中设置按钮图标