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。