如何从外部设置项目面板的样式?



我定义了一个样式来使所有StackPanel绿色:

<Window.Resources>
<Style TargetType="StackPanel">
<Setter Property="Background" Value="Green" />
</Style>
</Window.Resources>

但是如果我使用StackPanel作为面板模板,那么它不是绿色的:

<UniformGrid>
<StackPanel /><!-- this one is green -->
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel /><!-- this one is not -->
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</UniformGrid>

为什么?如何让它也绿色?

将隐式Style移动到App.xaml或将基于隐式Style的资源添加到ItemsPanelTemplate

<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<ItemsPanelTemplate.Resources>
<Style TargetType="StackPanel" BasedOn="{StaticResource {x:Type StackPanel}}" />
</ItemsPanelTemplate.Resources>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>

如果不执行任何操作,则不继承自Control的类型将不会选取隐式样式。

相关内容

  • 没有找到相关文章

最新更新