如何将MahApps风格应用于我自己的WPF控件

本文关键字:我自己 自己的 WPF 控件 应用于 风格 MahApps | 更新日期: 2023-09-27 18:25:11

通常,当我将TabItem的Header设置为某个字符串时,MahApps样式会应用于TabItem Header。

然而,我以编程方式创建了自定义TabItem,它的标题不是字符串,而是StackPanel,MahApps的所有样式都丢失了。如何将MahApps样式重新应用于我的自定义TabItem标题?

TabItem tabItem = new TabItem();
StackPanel tabItemHeader = new StackPanel();
tabItemHeader.Orientation = Orientation.Horizontal;
var tabTitle = new Label() {Content = "Userstory"};
var closeButton = new Button() {Content = "x"}; 
tabItemHeader.Children.Add(tabTitle);
tabItemHeader.Children.Add(closeButton);
tabItem.Header = headerStackPanel;

如何将MahApps风格应用于我自己的WPF控件

您应该使用XAML和样式的强大功能来实现这一点。这里有一个你可以做的简单示例:

将此样式应用于Window资源或App资源。

<Style x:Key="CustomTabItemStyle" TargetType="{x:Type TabItem}" BasedOn="{StaticResource MetroTabItem}">
    <Setter Property="HeaderTemplate">
        <Setter.Value>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <ContentPresenter Content="{TemplateBinding Content}" />
                    <Button Margin="2" VerticalAlignment="Top" Width="{Binding RelativeSource={RelativeSource Self}, Path=ActualHeight}" Content="x" />
                </StackPanel>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

并在TabItems 中使用

<TabItem Header="Userstory" Style="{StaticResource CustomTabItemStyle}">
    <!-- your tab content -->
</TabItem>

使用样式的好处是,你可以做/改变你想要的。。。

希望这能有所帮助!