编程语言
首页 > 编程语言> > c# – 将当前前景绑定到Rectangle.Fill属性

c# – 将当前前景绑定到Rectangle.Fill属性

作者:互联网

我在我的项目中使用Mahapps Metro主题.我想创建TabContem TabItem将成为图像的TabControl.选择TabItem时,Mahapps主题提供TabItem文本的更改颜色等.我想将此前景色绑定到我的图像.
我有这个问题的解决方案,但我认为这是不正确的.

‘坏’代码(但它正在运行):

<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>

标签:c,wpf,xaml,mahapps-metro
来源: https://codeday.me/bug/20190628/1314632.html