将当前前景绑定到 Rectangle.Fill 属性
Binding current foreground to Rectangle.Fill property
我在我的项目中使用 Mahapps Metro 主题。我想创建 TabControl
,其中 TabItem
将是图像。 Mahapps 主题提供了在选择 TabItem
时更改 TabItem 文本的颜色等。我想将此前景色绑定到我的图像。
我有这个问题的解决方案,但我认为它不正确。
'Bad' 代码(但有效):
<TabItem>
<TabItem.HeaderTemplate>
<DataTemplate>
<Grid Margin="0,5,0,0">
<TextBlock x:Name="myTextBlock" />
<Rectangle Width="28.947" Height="25" Fill="{Binding ElementName=myTextBlock, Path=Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_image_gallery}" />
</Rectangle.OpacityMask>
</Rectangle>
</Grid>
</DataTemplate>
</TabItem.HeaderTemplate>
</TabItem>
如果不想绑定到内部 TextBlock
,可以使用 TemplateBinding
。
<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>
我在我的项目中使用 Mahapps Metro 主题。我想创建 TabControl
,其中 TabItem
将是图像。 Mahapps 主题提供了在选择 TabItem
时更改 TabItem 文本的颜色等。我想将此前景色绑定到我的图像。
我有这个问题的解决方案,但我认为它不正确。
'Bad' 代码(但有效):
<TabItem>
<TabItem.HeaderTemplate>
<DataTemplate>
<Grid Margin="0,5,0,0">
<TextBlock x:Name="myTextBlock" />
<Rectangle Width="28.947" Height="25" Fill="{Binding ElementName=myTextBlock, Path=Foreground}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_image_gallery}" />
</Rectangle.OpacityMask>
</Rectangle>
</Grid>
</DataTemplate>
</TabItem.HeaderTemplate>
</TabItem>
如果不想绑定到内部 TextBlock
,可以使用 TemplateBinding
。
<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>