C# WPF ListView仅为一个单元格使用codebehind改变前景
嗨,我有一个C# WPF ListView仅为一个单元格使用codebehind改变前景,c#,wpf,listview,code-behind,C#,Wpf,Listview,Code Behind,嗨,我有一个列表视图,有两列,“文件夹”和“状态”。如果“状态”成员的数据为“锁定”,如何将其前景更改为绿色,如果其数据为“解锁”,如何将其前景更改为红色 范例 Folder | Status ----------+-------------------------------------------- xxxx | Locked <--To be appeared as green yyyyy | Unlocked <-
列表视图
,有两列,“文件夹”和“状态”。如果“状态”成员的数据为“锁定”,如何将其前景更改为绿色,如果其数据为“解锁”,如何将其前景更改为红色
范例
Folder | Status
----------+--------------------------------------------
xxxx | Locked <--To be appeared as green
yyyyy | Unlocked <-- To be appeared as red
文件夹|状态
----------+--------------------------------------------
xxxx | Locked您可以对特定的CellTemplate使用触发器
<DataTemplate>
<TextBlock Text="{Binding Path=Status}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Locked}" Value="True">
<Setter Property="Foreground" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Locked}" Value="False">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<DataTemplate>
更新
我刚才看到您使用命令式代码要求解决方案。因此,你可以忽略我的答案,这是一个去极化的解决方案
但是请注意,您试图实现的目标不应该在代码隐藏中实现,因为它不符合MVVM原则请注意,他没有说他正在使用MVVM模式。WPF本打算与MVVM一起使用,但无论如何都不一定要使用。@reviouser-我同意你的看法。我只是想提到良好习惯,您应该从第二列中删除DisplayMemberBinding,并为TextBlock的文本属性{Binding Path=FolderStatus}添加以下内容
<DataTemplate>
<TextBlock Text="{Binding Path=Status}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Red"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Locked}" Value="True">
<Setter Property="Foreground" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Locked}" Value="False">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<DataTemplate>