2010-03-10 17 views
11

Zakładając, że powiązanie jest poprawne, a pliki obrazów są tam, gdzie się znajdują, czy ktoś może stwierdzić, dlaczego obraz w poniższym xaml nie zmieni się, gdy wyzwalacz wyliczy, że jest prawdziwy?wpf datatrigger na źródle obrazu

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

Odpowiedz

31

spróbować następujących ...

  • Ustaw TargetType = "{x: Type Obraz}" w stylu
  • zmienić seter Nieruchomościami do Właściwość = "Źródło"

Sposób, w jaki ścieżka własności jest zdefiniowany na wynajem, szuka nieruchomości na Obrazie Image (który nie istnieje), a następnie wewnątrz czegoś zwanego Źródłem.

Dodatkowo usuń atrybut Źródło ze znacznika Obrazek u góry. Spowoduje to zastąpienie tego, co zostanie zastosowane przez styl. Możesz przenieść go do innego narzędzia Data Trigger lub ustawić je w normalnym selektorze:

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

Twój czas jest interesujący. Właśnie zamierzam opublikować coś na moim blogu na temat kontroli, która robi coś bardzo podobnego do tego, ale w znacznie bardziej zwięzłej składni.

+0

suh-weet do tej pory te rzeczy przychodzą do mnie z bajtów wielkości. dzięki! – Berryl

+0

wiele Hi 5-tych ... Nie wiem, dlaczego to było tak trudne, ale twój przykład pomógł mi przydzielić. –