2015-02-02 2 views
0

У меня есть прямоугольник, который я хочу заполнить разными картинками на основе свойства. Я создал привязку к переменной 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 в стиль для da tatrigger сеттер

+1

Вы могли бы просто использовать элемент управления Image вместо прямоугольника, и установите его свойство Source в той или иной BitmapImage по DataTriggers. – Clemens

+0

Да, я знаю, но позже мне понадобятся другие свойства Rectangle в проекте. Поэтому мне нужно сделать это с помощью прямоугольников. – Safiron

ответ

2

Вы можете установить Setter.Value так же, как вы установили Rectangle.Fill:

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

Именно то, что я искал! благодаря – Safiron

Смежные вопросы