在我的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?
答案 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)
答案 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
的默认样式。