简体   繁体   English

用资源中的图像填充矩形

[英]Fill rectangle with Image from resource

I have rectangle which I want to fill with different pictures based on property. 我有一个矩形,我想根据属性填充不同的图片。 I created a binding to bool variable and styles. 我创建了一个布尔变量和样式的绑定。 But code does not work. 但是代码不起作用。

Error: Cannot convert ystem.Windows.Media.Imaging.BitmapImage to System.Windows.Media.Brush 错误:无法将ystem.Windows.Media.Imaging.BitmapImage转换为System.Windows.Media.Brush

<Rectangle Width="20" Height="20" Canvas.Left="{Binding x}"  Canvas.Top="{Binding y}">
 <Rectangle.Style>
  <Style TargetType="Rectangle">
   <Style.Triggers>
    <DataTrigger Binding="{Binding teamgreen}" Value="True">
     <Setter Property="Fill" Value="{StaticResource tankGreen}" />
    </DataTrigger>
    <DataTrigger Binding="{Binding teamgreen}" Value="False">
     <Setter Property="Fill" Value="{StaticResource tankBlue}"/>
    </DataTrigger>
   </Style.Triggers>
  </Style>
 </Rectangle.Style>
</Rectangle>

tankGreen and tankBlue look like this tankGreen和tankBlue看起来像这样

<BitmapImage x:Key="tankBlue" UriSource="..\Images\tankBlue.png" />
<BitmapImage x:Key="tankGreen" UriSource="..\Images\tankGreen.png" />

they work fine when I use 当我使用它们时,它们工作正常

<Rectangle.Fill>                               
 <ImageBrush ImageSource="{DynamicResource tankBlue}" />
</Rectangle.Fill>

I guess I just dont know how to incorporate ImageBrush into style for datatrigger setter 我想我只是不知道如何将ImageBrush整合到datatrigger setter的样式中

You can set Setter.Value just like you set Rectangle.Fill : 您可以像设置Rectangle.Fill一样设置Setter.Value

<DataTrigger Binding="{Binding teamgreen}" Value="True">
    <Setter Property="Fill">
        <Setter.Value>
            <ImageBrush ImageSource="{DynamicResource tankGreen}" />
        </Setter.Value>
    </Setter>    
</DataTrigger>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM