通常,当我将TabItem的Header设置为某个字符串时,MahApps样式将应用于TabItem标题。
但是,我以编程方式创建了自定义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;
答案 0 :(得分:1)
你应该利用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>
使用样式的好处是,你可以做/改变你想要的东西......
希望这有帮助!