我正在使用MaterialDesign Toolkit和Dragablz在WPF中工作 . 我试图设计 TabablzControl
时遇到了问题 . 我已经为windows默认 TabControl
和 TabItem
Headers 设置了样式,如图所示:http://i.imgur.com/2anl5rl.png
但是当我将默认的tabControl更改为TabablzControl时,它变为:http://i.imgur.com/bhaaMVy.png
这是window.resources:
<Style x:Key="mdTabControl" TargetType="TabControl">
<Setter Property="TextElement.Foreground" Value="{DynamicResource MaterialDesignBody}"/>
<Setter Property="Background" Value="{DynamicResource MaterialDesignPaper}"></Setter>
</Style>
<Style x:Key="mdTabHeader" TargetType="{x:Type TabItem}">
<Setter Property="Background" Value="{DynamicResource MaterialDesignPaper}"></Setter>
<Setter Property="Foreground" Value="{DynamicResource MaterialDesignBody}"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid>
<Border Name="Border" Margin="1,0,1,0" CornerRadius="3 3 0 0">
<ContentPresenter x:Name="ContentSite" VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header" Margin="10,2,10,2"
RecognizesAccessKey="True">
</ContentPresenter>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Panel.ZIndex" Value="100" />
<Setter TargetName="Border" Property="Background" Value="{StaticResource SecondaryAccentBrush}" />
<Setter Property="Foreground" Value="{StaticResource SecondaryAccentForegroundBrush}"/>
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Panel.ZIndex" Value="100" />
<Setter TargetName="Border" Property="Background" Value="{StaticResource PrimaryHueMidBrush}" />
<Setter Property="Foreground" Value="{StaticResource PrimaryHueMidForegroundBrush}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Border" Property="Background" Value="{StaticResource PrimaryHueDarkBrush}" />
<Setter Property="Foreground" Value="{StaticResource PrimaryHueDarkForegroundBrush}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
将 mdTabControl
样式targetType更改为: TargetType="dbz:TabablzControl"
时出现错误
我想保持我设置的样式 TabControl
,但增加了 TabablzControl
的功能
任何帮助将不胜感激
2 回答
首先要注意的是,这是一般的WPF特性,你没有正确使用样式继承 .
在使用带有Dragablz的Material Design时,如果要重新设置选项卡控件本身,则必须使用 BasedOn 从Dragablz程序集中的Material Design样式继承:
再次,使用选项卡 Headers 本身,您需要从相关样式继承:
请注意,(根据您的App.xaml设置),您可能需要确保在同一个XAML文件中包含正确的资源字典 . 例如,更完整的XAML可能是:
Finally ,当您更改TabItem样式时,您需要使用TabablzCOntrol样式的正确样式,或者您可以在实际声明TabablzControl本身的地方使用它:
所有这一切的一个很好的例子是在演示解决方案的 SidePanels 项目中:https://github.com/ButchersBoy/DragablzSamplez