Search code examples
wpfdatatrigger

WPF: Simplest of DataTriggers


I'm just trying to learn DataTriggers. What's wrong with this simple code? It tells me that "Source" is not a property of FrameworkElement.

<Image>
    <Image.Triggers>
        <DataTrigger Binding="{Binding Status}" Value="Sent">
            <Setter Property="Source" Value="Resources\Approve_64_Trans.bmp"/>
        </DataTrigger>

        <DataTrigger Binding="{Binding Status}" Value="SendFailed">
            <Setter Property="Source" Value="Resources\Cancel_64_Trans.bmp"/>
        </DataTrigger>
    </Image.Triggers>
</Image>

Also, is it correct to use a value "SendFailed" or "Sent" when the Status field is of enum type and SendFailed and Sent are two valid enum values?


Solution

  • You need to put that kind of trigger in a style, like so:

      <Image>
         <Image.Style>
            <Style TargetType="Image">
               <Style.Triggers>
                  <DataTrigger Binding="{Binding Status}" Value="Sent">
                     <Setter Property="Source" Value="Resources\Approve_64_Trans.bmp"/>
                  </DataTrigger>
                  <DataTrigger Binding="{Binding Status}" Value="SendFailed">
                     <Setter Property="Source" Value="Resources\Cancel_64_Trans.bmp"/>
                  </DataTrigger>
               </Style.Triggers>
            </Style>
         </Image.Style>
      </Image>