我试图通过这个xaml:为wpf中的图像制作一个不透明度遮罩
<Border x:Name="border1" Margin="20" BorderThickness="2" BorderBrush="Red" CornerRadius="50" >
<Grid>
<Border Background="Wheat" x:Name="border2" CornerRadius="50"/>
<Image Margin="0" Source="Images/SpiderMan.png" Stretch="Fill">
<Image.OpacityMask>
<VisualBrush Visual="{Binding ElementName=border2}"/>
</Image.OpacityMask>
</Image>
</Grid>
</Border>
这个xaml工作正常,很好,但当我将Elementname更改为border1时,它不起作用吗?为什么会发生这种情况?
编辑(另一个问题(:
在上面的xaml中,在我设置的Background属性之前,图像不会显示border2但为什么会发生这种情况?为什么没有背景属性的图像不显示?
Border1不能分配给VisualBrush,因为它是父控件。如果允许这种绑定。。您将面临巨大的递归和stackoverflow异常。下一个XAML shold工作
<Grid>
<Border x:Name="border1" Margin="20" BorderThickness="2" BorderBrush="Red" CornerRadius="50" />
<Grid>
<Border Background="Wheat" x:Name="border2" CornerRadius="50"/>
<Image Margin="0" Source="Images/SpiderMan.png" Stretch="Fill">
<Image.OpacityMask>
<VisualBrush Visual="{Binding ElementName=border1}"/>
</Image.OpacityMask>
</Image>
</Grid>
</Grid>