我想在列表视图中显示图标而不是值。基本上,ListView绑定到ModelView-Class(Observable-Collection作为其中的属性),并且有一个名为“status”的列。根据状态值,我想显示不同的图像。什么是最好的方法。我读到了关于DataTemplate的内容,但我不知道在哪里挂钩代码来切换图像。
MV-Class构造函数如下所示:
public TaskViewModel()
{
this.TaskCollection = ac.GetAllTasks();
}
非常感谢,
亚当
答案 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也是一个非常简单的例子。
关键是要定义简单的类,它只是分析传入的值并返回一个合适的数据模板,显然你必须为每个图像声明一个数据模板。