阻止子进程继承TabControls

时间:2016-06-28 14:43:03

标签: wpf xaml

在我的WPF应用程序中,我有一个TabControl,我绑定到我创建的样式:

在我的观点上:

<TabControl Grid.Row="6" Style="{DynamicResource SideBarTabControl}">

在单独的ResourceDictionary上:

<Style x:Key="SideBarTabControl" TargetType="{x:Type TabControl}" BasedOn="{StaticResource {x:Type TabControl}}" >
        <Setter Property="FontSize" Value="{DynamicResource TitleFontSize}"/>
</Style>

到目前为止一切顺利,事情按预期进行。问题是,现在TabControl中的所有子节点(例如TabItem中的ListView)也获得与TabControl相同的FontSize,而不是默认值。

我认为通过指定 TargetType =&#34; {x:Type TabControl}&#34; ,我会停止将样式应用于不同类型的孩子。我正在寻找的是实际阻止它影响一切但是明确继承该风格的组件。那么怎么做呢?我想我错过了一些简单的事情......

如果我覆盖我的ListView中的字体大小,它可以工作,但这意味着我必须为每个孩子做这件事,这可能会变得非常麻烦。

我已经阅读了这个和其他问题,但我找不到我要找的答案:

Is it possible to set a style in XAML that selectively affects controls?

2 个答案:

答案 0 :(得分:2)

这对我有用。正在开展工作的部分是<TabControl> <TabControl.ItemContainerStyle> <Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}" > <Setter Property="HeaderTemplate"> <Setter.Value> <DataTemplate> <ContentControl TextElement.FontSize="20" Content="{Binding Header, RelativeSource={RelativeSource AncestorType=TabItem}}" /> </DataTemplate> </Setter.Value> </Setter> </Style> </TabControl.ItemContainerStyle> <TabItem Header="Foo"> <Label Content="Bar" /> </TabItem> <TabItem Header="Baz"> <Label Content="Bar" /> </TabItem> </TabControl> 。它仅将字体大小应用于标题内容。

let config = WKWebViewConfiguration()
config.websiteDataStore = WKWebsiteDataStore.nonPersistentDataStore()

let webView = WKWebView(frame: .zero, configuration: config)

enter image description here

答案 1 :(得分:1)

你无法阻止它,它不是导致你想要摆脱这种不必要的涓滴效果的风格;它只是WPF控制的工作方式。

要停止此操作,必须为选项卡项编写另一种样式,以拦截从TabControl继承的样式。 我建议在你现有的TabControl样式中编写这个样式,在Style.Resources标签内,如下所示:

 <Style x:Key="SideBarTabControl" TargetType="{x:Type TabControl}" BasedOn="{StaticResource {x:Type TabControl}}" >
                <Style.Resources>
                    <Style TargetType="{x:Type TabItem}">
                        <Setter Property="FontSize" Value="9001"/>
                        <!-- Any other setters you want for TabItems -->
                    </Style>
                </Style.Resources>
                <Setter Property="FontSize" Value="{DynamicResource TitleFontSize}"/>
            </Style>

通过在其他样式的资源中创建样式,它将随之携带,并且不为x:Key样式指定任何TabItem - 它会将其应用于任何TabItem}未命令具有特定样式,成为您现在TabItem内所有TabControl的默认样式。