将矩形的大小设置为图像大小

Set Size of Rectangle to image size

我正在使用它来显示可以改变颜色的图标

<Rectangle Width="100"
           Height="100"
           Fill="{DynamicResource WhiteBrush">
   <Rectangle.OpacityMask>
      <ImageBrush Stretch="Uniform" ImageSource={x:Static ImageResources.MyImage}"/>
   </Rectangle.OpacityMask>
</Rectangle>

问题是,并非每张图片在 100x100 下看起来都不错,如果我不填充这些值,则不会显示任何内容。我想要实现的是,矩形自动采用所需的图像大小,就像我使用

<Image Source="{x:Static ImageResources.MyImage}"/>

知道如何实现吗?我已经尝试为 ImageBrush 命名并参考矩形的大小,这不起作用。

作为一种解决方法,我将一个图像放置在 Visibility=Hidden 的相同位置,并从那里获取 Rectangle 的 actualHeight 和 actualWidth,但这不是一个可接受的解决方案。欢迎任何提示。

您可以绑定矩形的宽度和高度:

<Rectangle Fill="{DynamicResource WhiteBrush"
           Width="{Binding Width, Source={x:Static ImageResources.MyImage}}"
           Height="{Binding Height, Source={x:Static ImageResources.MyImage}}">
    <Rectangle.OpacityMask>
        <ImageBrush ImageSource="{x:Static ImageResources.MyImage}"/>
    </Rectangle.OpacityMask>
</Rectangle>