谁能解释为什么我的 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/