如何解决WPF为面板中的所有TabItem明确使用样式
我有一个带有TabControl的窗口,此TabControl中的所有TabItem应该具有相同的样式:
<TabControl Name="TabControl1">
<TabControl.Resources>
<Style TargetType="TabItem">...</Style>
</TabControl.Resources>
<TabItem Header="Tab Item 1"/>
<TabItem Header="Tab Item 2"/>
<TabItem Header="Tab Item 3"/>
</TabControl>
这当然可以正常工作。
我希望我的应用程序中的几个TabItem具有这种样式。其他TabControl中的某些其他TabItem应该具有不同的样式。因此,我在App.XAML中创建了几种样式:
<Style x:Key="TabItemStyle1" TargetType="TabItem">...</Style>
<Style x:Key="TabItemStyle2" TargetType="TabItem">...</Style>
现在,我必须指定TabControl1中的所有TabItem应该使用TabItemStyle1。
<TabControl Name="Example2">
<TabItem Header="Tab Item 1" Style="{StaticResource TabItemStyle1}" />
<TabItem Header="Tab Item 2" Style="{StaticResource TabItemStyle1}"/>
<TabItem Header="Tab Item 3" Style="{StaticResource TabItemStyle1}"/>
</TabControl>
这可行,但我宁愿定义TabControl1中的所有TabItem都应使用TabItemStyle1。
<TabControl Name="Example3">
<TabControl.Resources>
<Style TargetType="TabItem" ???
</TabControl.Resources>
<TabItem Header="Tab Item 1"/>
<TabItem Header="Tab Item 2"/>
<TabItem Header="Tab Item 3"/>
</TabControl>
该怎么做?
解决方法
您可以创建一个范围为tabcontrol的新隐式样式,并继承TabItemStyle1。
<TabControl Name="Example3">
<TabControl.Resources>
<Style TargetType="TabItem" BasedOn="{StaticResource TabItemStyle1}"/>
</TabControl.Resources>
(上面是空代码,我没有检查应用程序中的确切语法)。
,设置select A.color,A.country from A,B
where B.country <> A.country and B.color <> A.color
group by A.country,A.color
中的ItemContainerStyle
,这会将样式应用于所有TabControl
。
TabItem
如果它们是在其他地方定义的,例如<TabControl>
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<!-- ...your setters. -->
</Style>
</TabControl.ItemContainerStyle>
<TabItem Header="Tab Item 1"/>
<TabItem Header="Tab Item 2"/>
<TabItem Header="Tab Item 3"/>
</TabControl>
,您当然也可以引用它们:
App.xaml
两个示例均仅将样式应用于关联的<TabControl ItemContainerStyle="{StaticResource TabItemStyle1}">
中的TabItems
。如果您希望将这些样式应用于其他嵌套 TabControl
中的所有TabItem
,则必须创建一个范围为TabControl
的隐式样式,如@安迪建议的那样。
TabControl
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。