如何根据绑定值在数据网格StackPanel中显示图像
本文关键字:StackPanel 网格 显示 图像 显示图 数据网 数据 何根 绑定 | 更新日期: 2023-09-27 18:27:24
我需要根据绑定值将图像显示为单独的行。数据网格代码如下。
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="OrderId : "/>
<TextBlock Text="{Binding OrderId}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="OrderTime : "/>
<TextBlock Text="{Binding OrderTime}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="OrderStatus : "/>
<TextBlock Text="{Binding OrderStatus}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我想再添加一个带有<Image Source=""/>
的StackPanel。源路径将基于网格上方的{Binding OrderStatus}
。如果OrderStatus值为"New",我要显示New.png。如果OrderStatus的值为"Old",我想显示Old.png,依此类推…
有人能帮我吗。
使用DataTrigger。链接还有一个很好的例子。
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="OrderId : "/>
<TextBlock Text="{Binding OrderId}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="OrderTime : "/>
<TextBlock Text="{Binding OrderTime}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="OrderStatus : "/>
<TextBlock Text="{Binding OrderStatus}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image Width="250px" Height="50px" Margin="3,0">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding OrderStatus}" Value="New">
<Setter Property="Source" Value="/Images/New.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding OrderStatus}" Value="Old">
<Setter Property="Source" Value="/Images/Old.png"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</StackPanel>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>