0

我有这个 Xaml 代码

<ListView x:Name="listOrderList" Margin="58,55,0,0" Background="{x:Null}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="DESCRIPTION" DisplayMemberBinding="{Binding Description}"/>
            <GridViewColumn Header="STATUS">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <Image Source="{Binding Status}"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

在 C# 中,我有一个enumfor 状态,我知道显然<Image Source="{Binding Status}"/>不会工作。但是如何做一些事情,例如我在Status枚举中有两个值。说是和否。我如何将小图标分配给枚举的值并轻松使用绑定。

谢谢。

4

3 回答 3

2

要么使用绑定转换器,要么将 DataTriggers 添加到 DataTemplate。下面的示例假定以下枚举

public enum Status { Status1, Status2 }

并根据属性的值将Image的Source属性设置为不同的图像资源Status

<Window.Resources>
    <BitmapImage x:Key="Image1" UriSource="..."/>
    <BitmapImage x:Key="Image2" UriSource="..."/>
</Window.Resources>

...

<DataTemplate>
    <Image x:Name="image"/>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Status}" Value="Status1">
            <Setter TargetName="image" Property="Source"
                    Value="{StaticResource Image1}"/>
        </DataTrigger>
        <DataTrigger Binding="{Binding Status}" Value="Status2">
            <Setter TargetName="image" Property="Source"
                    Value="{StaticResource Image2}"/>
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>
于 2013-10-07T13:58:51.337 回答
2

查看IValueConverter

有了它,您可以检查绑定传递了哪个值,然后创建Image要显示的对象。

于 2013-10-07T13:12:43.313 回答
1

您可以将 Icon 图像路径设置为 Enum,然后将 DataGrid 与该 Enum 绑定。

            <DataGridTemplateColumn x:Name="colStatus" Width="160" Header="Status">
                        <DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                   <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" OverridesDefaultStyle="True" Width="135">
                                    <Image Height="14" Margin="2,0,0,0" HorizontalAlignment="Left" Source="{Binding Status}" Width="14" />
                                    </StackPanel>
                            </DataTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
于 2013-10-07T13:17:53.870 回答