c# - 仅 WPF TabItem 标题样式

标签 c# wpf xaml

我正在编写一个 WPF 应用程序,并尝试设置 TabItem header 的样式,仅在选择时显示背景颜色更改的边框。问题是,当我添加该样式时,它会弄乱 TabItem 中 TextBlock 项目的样式。我不是 WPF/XAML 专家。下面是我在 TabControl 中使用的样式。我也在使用 MahApps 地铁样式。任何想法将不胜感激。

            <TabControl.Resources>
                <Style TargetType="TabItem">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="TabItem">
                                <Border Name="Border" BorderThickness="1,1,1,0" BorderBrush="Gainsboro" CornerRadius="4,4,0,0" Margin="2,0">
                                    <ContentPresenter x:Name="ContentSite"
                                    VerticalAlignment="Center"
                                    HorizontalAlignment="Center"
                                    ContentSource="Header"
                                    Margin="10,2"/>
                                </Border>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsSelected" Value="True">
                                        <Setter TargetName="Border" Property="Background" Value="{DynamicResource AccentColorBrush}" />
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </TabControl.Resources>

最佳答案

当您为 WPF 控件编写新样式时,如果您没有完全重新设计所有内容,最好让它继承现有的隐式样式。那里可能还有很多你不想丢失的其他东西,看起来就是这样。尝试将 BasedOn 属性设置为隐式 TabItem 样式:

<Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}">

看看这是否有帮助。

在 WPF 中,runtime Type of a control is conventionally used as the resource key for the style that's applied to it by default

关于c# - 仅 WPF TabItem 标题样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41511983/

相关文章:

c# - Graphics MeasureString 方法是否/可以考虑容器的宽度和换行?

c# - Visual C# 在调用包装的 C++\CLI dll 中的 Lapack 时抛出 System.AccessViolationException

wpf - 使用 IEventAggregator,是否可以先发布事件然后订阅它?

WPF 延迟刷新 ItemsControl 中的 UI 元素

c# - 在 UWP Windows 10 C# 中创建带边框的圆形按钮

c# - 窗口加载和 WPF

c# - 将C#中的char*和struct传递给c++ DLL,除一个变量外,所有变量都成功传递

wpf - 在PresentationFramework.dll中发生了类型 'System.InvalidOperationException'的第一次机会异常

c# - 从 WPF 中的 ListBox 获取被点击的元素

c# - 在 C# (Visual Studio) 中折叠所有 #regions only(!)