如何根据绑定值在数据网格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,依此类推…

有人能帮我吗。

如何根据绑定值在数据网格StackPanel中显示图像

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