C# 标签中的Mahapps Metro徽章正在剪裁
如果我试图在C# 标签中的Mahapps Metro徽章正在剪裁,c#,wpf,mahapps.metro,C#,Wpf,Mahapps.metro,如果我试图在MetroTabItem的头的内容周围放置一个标记,则标记会被头的边界剪裁 我已经尝试使用Snoop来查看模板是否有任何明显的属性导致了这种情况,但没有效果 这是MetroTabItem的代码 <metro:MetroTabItem> <TabItem.Header> <metro:Badged BadgePlacementMode="TopRight" BadgeBackground="Transparent">
MetroTabItem
的头的内容周围放置一个标记,则标记会被头的边界剪裁
我已经尝试使用Snoop来查看模板是否有任何明显的属性导致了这种情况,但没有效果
这是MetroTabItem的代码
<metro:MetroTabItem>
<TabItem.Header>
<metro:Badged BadgePlacementMode="TopRight" BadgeBackground="Transparent">
<metro:Badged.Badge>
<iconPacks:PackIconMaterial Kind="AlertCircleOutline" Foreground="{DynamicResource ValidationBrush5}"/>
</metro:Badged.Badge>
<TextBlock Text="Scripts"
Padding="0"
Foreground="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContentPresenter}}, Path=(TextElement.Foreground)}"
FontSize="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContentPresenter}}, Path=(TextElement.FontSize)}"
/>
</metro:Badged>
</TabItem.Header>
</metro:MetroTabItem>
App.xaml:
<Application x:Class="TabItemBadgeLayout.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TabItemBadgeLayout"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
您可以为标记的元素指定边距:
<metro:MetroTabControl>
<metro:MetroTabControl.Resources>
<Style TargetType="metro:Badged" BasedOn="{StaticResource {x:Type metro:Badged}}">
<Setter Property="Margin" Value="0 10 2 0" />
</Style>
</metro:MetroTabControl.Resources>
<metro:MetroTabItem>
<TabItem.Header>
<metro:Badged BadgePlacementMode="TopRight" BadgeBackground="Transparent">
<metro:Badged.Badge>
<iconPacks:PackIconMaterial Kind="AlertCircleOutline" Foreground="{DynamicResource ValidationBrush5}"/>
</metro:Badged.Badge>
<TextBlock Text="Scripts"
Padding="0"
Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type metro:ContentControlEx}}, Path=(TextElement.Foreground)}"
FontSize="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type metro:ContentControlEx}}, Path=(TextElement.FontSize)}"
/>
</metro:Badged>
</TabItem.Header>
</metro:MetroTabItem>
...
...
为清晰起见,在第二幅图像中,绿色徽章未与选项卡项标题重叠。就在它下面。”“脚本”中的“c”位于绿色图标上方。在图3中很容易看到它。可能是无关紧要的。你说你有snoop,当你在snoop ui中查看它时,视觉树中的徽章是附在什么上的?啊,很抱歉,它没有注意到。我编辑了一张视觉树的截图,在TabItem上剪切边距不起作用。但是,在metro:Badged
控件上放置边距可以避免剪切(通过使容器变大),但会更改布局。我想这是一个解决办法,但理想情况下,我想禁用剪辑。它当然适合我。然后将边距放在父选项卡控件上。它似乎在设计器中起作用,但在运行时不起作用。家长的保证金也不起作用(至少对我来说)。在运行/调试时,而不是在设计器中,您的显示是否正确?当您提出问题时,应始终创建一个最小、完整且可验证的示例:请查看我的最新编辑。在TabItem
或TabControl
上添加页边距仍然无法排序此问题
<metro:MetroTabControl>
<metro:MetroTabControl.Resources>
<Style TargetType="metro:Badged" BasedOn="{StaticResource {x:Type metro:Badged}}">
<Setter Property="Margin" Value="0 10 2 0" />
</Style>
</metro:MetroTabControl.Resources>
<metro:MetroTabItem>
<TabItem.Header>
<metro:Badged BadgePlacementMode="TopRight" BadgeBackground="Transparent">
<metro:Badged.Badge>
<iconPacks:PackIconMaterial Kind="AlertCircleOutline" Foreground="{DynamicResource ValidationBrush5}"/>
</metro:Badged.Badge>
<TextBlock Text="Scripts"
Padding="0"
Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type metro:ContentControlEx}}, Path=(TextElement.Foreground)}"
FontSize="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type metro:ContentControlEx}}, Path=(TextElement.FontSize)}"
/>
</metro:Badged>
</TabItem.Header>
</metro:MetroTabItem>
...