使用资源中的图像填充矩形

时间:2015-02-02 20:45:56

标签: c# wpf xaml styles

我有矩形,我希望根据属性填充不同的图片。我创建了一个绑定bool变量和样式。但代码不起作用。

错误:无法将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和tankBlue看起来像这样

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

我使用

时工作正常
<Rectangle.Fill>                               
 <ImageBrush ImageSource="{DynamicResource tankBlue}" />
</Rectangle.Fill>

我想我只是不知道如何将ImageBrush合并到datatrigger setter的样式

1 个答案:

答案 0 :(得分:2)

您可以像设置Setter.Value

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