Wpf 如何根据DataGrid单元格值加载不同的图像?

Wpf 如何根据DataGrid单元格值加载不同的图像?,wpf,xaml,Wpf,Xaml,假设我有一个DataGrid,其中一个单元格包含一个默认图像: <Datagrid AutoGenerateColumns="False" ItemsSource="{Binding}"> <DataGrid.Columns> <DataGridTextColumn Header="Bookmaker" Binding="{Binding book_name}"/> <DataGr

假设我有一个
DataGrid
,其中一个单元格包含一个默认图像:

<Datagrid AutoGenerateColumns="False"                                  ItemsSource="{Binding}">
<DataGrid.Columns>
 <DataGridTextColumn Header="Bookmaker" Binding="{Binding book_name}"/>
   <DataGridTemplateColumn CanUserResize="False">
     <DataGridTemplateColumn.CellTemplate>
       <DataTemplate>
         <Image Source="/App;component/Resources/Assets/foo.png" Width="40" Height="40"
         Stretch="UniformToFill" StretchDirection="Both"
         RenderOptions.BitmapScalingMode="HighQuality" />
         <DataTemplate.Triggers>
         <DataTrigger Binding="{Binding book_name}" Value="test">
         <Setter Property="sour" /> ????
     </DataTrigger>
     </DataTemplate.Triggers>
   </DataTemplate>
 </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

????

我希望显示为默认图像
foo.png
,但是如果单元格的值包含
test
,我需要更改图像的源,但是我找不到任何
source
属性,因为我使用了
DataTemplate
,有人遇到过类似情况?

设置样式
图像
,并在该样式内使用触发器为图像选择
源代码:

<DataTemplate>
    <Image Width="40" Height="40"
           Stretch="UniformToFill" StretchDirection="Both"
           RenderOptions.BitmapScalingMode="HighQuality">
        <Image.Style>
            <Style TargetType="Image">
                <Setter Property="Source" Value="pack://application:,,,/Assets/foo.png" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding book_name}" Value="test">
                        <Setter Property="Source" Value="pack://application:,,,/Assets/bar.png" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Image.Style>
    </Image>
</DataTemplate>

向图像中添加样式,而不是数据模板。然后为默认源值声明一个Setter,并在DataTrigger中为更改的源值声明一个Setter。