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

Wpf 将矩形的大小设置为图像大小,wpf,size,opacitymask,Wpf,Size,Opacitymask,我用这个来显示可以改变颜色的图标 <Rectangle Width="100" Height="100" Fill="{DynamicResource WhiteBrush"> <Rectangle.OpacityMask> <ImageBrush Stretch="Uniform" ImageSource={x:Static ImageResources.MyImage}"/> </R

我用这个来显示可以改变颜色的图标

<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一个名称,并引用矩形的大小,但这不起作用


作为一种解决方法,我将一个图像放置在相同的位置,可见性=隐藏,并从那里获取矩形的实际高度和实际宽度,但这不是一个可接受的解决方案。欢迎任何提示。

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

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

如果我理解正确,那么你的目的是只在矩形中显示图像,对吗?@GaurangDave是的,我想看看下面的答案,哇,我不知道你可以绑定到静态图像的属性,很好。唯一的问题是,这会将图像设置为其原始大小。我用一个视图框将其包围,以便将其缩放到更好的大小。谢谢您可以将源设置为从转换器收集的图像吗?类似于Width={Binding Width,Source={Binding Status,Converter={StaticResource StatusToImageConverter}}}之类的东西,我也没有看到这不起作用的原因。但是我试过了,图像消失了,好像我根本没有设置宽度或高度对不起,我没有仔细阅读你评论中的XAML。绑定内部的绑定不起作用。根据ConverterParameter属性的值,可能有一个绑定转换器返回不同的属性,如BitmapSource的宽度或高度。