2010-03-10 1 views
11

Предполагая, что привязка правильная, и файлы изображений находятся там, где они были, может ли кто-нибудь определить, почему изображение в xaml ниже не изменится, когда триггер будет равен true?wpf datatrigger на источнике изображения

Приветствия,
Berryl

  <Image Source="..\..\Images\OK.png" Grid.Column="2" Stretch="None"> 
       <Image.Style> 
        <Style> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding TimeSheet, Converter={StaticResource overQuotaConv}}" Value="True"> 
           <Setter Property="Image.Source" Value="..\..\Images\Error.png"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </Image.Style> 
      </Image> 

ответ

31

Попробуйте следующее ...

  • Установите TargetType = "{х: Тип изображения}" на стиле
  • Изменение сеттер по недвижимости to Property = "Source"

Способ, которым путь собственности является cur он определенно определен, он ищет свойство в Image под названием Image (которого не существует), а затем внутри того, что называется Source.

Кроме того, удалите атрибут Source из тега изображения вверху. Это будет отменять все, что применяется стилем. Вы можете переместить его в другую DataTrigger или вы можете поместить его в нормальном сеттер так:

<Image Grid.Column="2" Stretch="None"> 
    <Image.Style> 
     <Style TargetType="{x:Type Image}"> 
      <Setter Property="Source" Value="..\..\Images\OK.png" /> 
      <Style.Triggers> 
       <DataTrigger Value="True" Binding="{Binding TimeSheet, Converter={StaticResource overQuotaConv}}"> 
        <Setter Property="Source" Value="..\..\Images\Error.png"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 

Ваш выбор времени интересен. Я как раз собираюсь опубликовать что-то в своем блоге об элементе управления, который делает что-то очень похожее на это, но в гораздо более сжатом синтаксисе.

+0

suh-weet Этот материал поступает в байты размером до меня до сих пор. благодаря! – Berryl

+0

несколько Hi 5 ... я не знаю, почему это было так сложно сделать, но ваш пример помог мне выделить. –