C# 将当前前景绑定到矩形。填充属性
我在我的项目中使用Mahapps Metro主题。我想创建C# 将当前前景绑定到矩形。填充属性,c#,wpf,xaml,mahapps.metro,C#,Wpf,Xaml,Mahapps.metro,我在我的项目中使用Mahapps Metro主题。我想创建TabControl,其中TabItem将是图像。Mahapps主题在选择TabItem等时提供更改TabItem文本的颜色。我想将此前景色绑定到我的图像。 我有这个问题的解决办法,但我认为它不正确 “错误”代码(但正在运行): 如果不想绑定到内部文本块,可以使用模板绑定 <TabItem.HeaderTemplate> <DataTemplate> <Grid Margin="0 5
TabControl
,其中TabItem
将是图像。Mahapps主题在选择TabItem
等时提供更改TabItem文本的颜色。我想将此前景色绑定到我的图像。
我有这个问题的解决办法,但我认为它不正确
“错误”代码(但正在运行):
如果不想绑定到内部
文本块
,可以使用模板绑定
<TabItem.HeaderTemplate>
<DataTemplate>
<Grid Margin="0 5 0 0">
<TextBlock Text="{Binding}" />
<Rectangle Width="28.947"
Height="25"
Fill="{TemplateBinding TextElement.Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{DynamicResource appbar_image_gallery}" />
</Rectangle.OpacityMask>
</Rectangle>
</Grid>
</DataTemplate>
</TabItem.HeaderTemplate>
你为什么认为它不好?我知道您想要一个形状(像您的透明图像),但要填充文本块的前景。您所做的是正确的方法,当涉及到塑造由某个图像定义的复杂形状时,使用OpacityMask
是唯一的方法(除非您可以将图像转换为某种SVG,然后转换为XAML几何体数据-这种方法要复杂得多)。
<TabItem.HeaderTemplate>
<DataTemplate>
<Grid Margin="0 5 0 0">
<TextBlock Text="{Binding}" />
<Rectangle Width="28.947"
Height="25"
Fill="{TemplateBinding TextElement.Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{DynamicResource appbar_image_gallery}" />
</Rectangle.OpacityMask>
</Rectangle>
</Grid>
</DataTemplate>
</TabItem.HeaderTemplate>