-2

我尝试通过这个 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 中,直到我设置了边框 2 的背景属性,图像才会显示但是会 发生这种情况吗?为什么没有背景属性图像不显示?

4

1 回答 1

-1

Border1 不能分配给 VisualBrush,因为它是父控件。如果允许这样的绑定..您将面临巨大的递归和 stackoverflow 异常。下一个 XAML 工作

<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>
于 2020-03-31T17:11:37.713 回答