WPF ListView图像取决于状态列

时间:2011-07-18 16:07:34

标签: wpf image listview

我想在列表视图中显示图标而不是值。基本上,ListView绑定到ModelView-Class(Observable-Collection作为其中的属性),并且有一个名为“status”的列。根据状态值,我想显示不同的图像。什么是最好的方法。我读到了关于DataTemplate的内容,但我不知道在哪里挂钩代码来切换图像。

MV-Class构造函数如下所示:

public TaskViewModel()
        {
            this.TaskCollection = ac.GetAllTasks();
        }

非常感谢,

亚当

2 个答案:

答案 0 :(得分:2)

我使用的是DataTrigger。这是一个例子:

<Style TargetType="{x:Type ListViewItem}">
    <Setter Property="Template" Value="{StaticResource DisabledImageTemplate}" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding Status}" Value="Active">
            <Setter Property="Template" Value="{StaticResource ActiveImageTemplate}" />
        </DataTrigger>
    </Style.Triggers>
</Style>

答案 1 :(得分:0)

如果您的图片路径/名称由后面的代码决定(这很糟糕但有时会发生),您可以实现IValueConverter并将其命名为StatusToIconConverter。请参阅here on MSDN,并附上一个简单示例。

关于Data Templates请参阅DataTemplateSelector课程。 Here is也是一个非常简单的例子。 关键是要定义简单的类,它只是分析传入的值并返回一个合适的数据模板,显然你必须为每个图像声明一个数据模板。