如何根据 ListBoxItem 值更改 ListBoxItem 的背景颜色

How to change Background Color of ListBoxItem based on ListBoxItem Value

我目前正在创建一个用作任务跟踪器的 Windows 8.1 商店应用程序。我当前的问题是我想更改列表视图中列出的项目以表示它们的优先级。我想通过更改背景颜色来做到这一点。 IE:红色 = 高,蓝色 = 中,绿色 = 低。

ListBoxItems 本身遵循一个模板,下面是相关的文本字段,我想根据 x:Name=priorityBind 进行更改。

<StackPanel Orientation="Horizontal">
                    <TextBlock Text="Priority:  " Margin="10, 0, 10, 10" />
                    <TextBlock x:Name="priorityBind" Text="{Binding Path=Priority}" Margin="10, 0, 10, 10"/>
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="Notes:  " Margin="10, 0, 10, 10" />
                    <TextBlock Text="{Binding Path=Notes}" Margin="10, 0, 10, 10"/>
                </StackPanel>
            </StackPanel>
        </Grid>
    </DataTemplate>

我能找到的所有示例似乎都是使用过时版本的商店应用程序完成的。设置触发器似乎是建议的路线,但它似乎不再适用于更新版本。下面是我的 ListView 代码片段。如果优先级文本框的值为 "Low"?

,我该如何修改它以便仅将背景颜色更新为绿色
<ListView x:Name="eventsListView" Grid.Row="1" Grid.Column="1"
                  ItemTemplate="{StaticResource eventTemplate}">
            <ListView.Resources>
                <Style TargetType="ListViewItem">
                    <Style.Setters>
                        <Setter Property="BorderBrush"
                                Value="White" />
                        <Setter Property="BorderThickness"
                                Value="5"/>
                        <Setter Property="Background"
                                Value="Green"/>
                    </Style.Setters>
                </Style>
            </ListView.Resources>       
        </ListView>

您可以使用 ItemTemplateSelector

指定哪个优先级应该使用哪个模板

ItemTemplateSelector 允许 ListView 根据您提供的 属性 呈现不同的模板,因为 parameter.This 是最佳实践解决方案 AFAIK。