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

时间:2015-06-20 20:49:06

标签: xaml listview colors winrt-xaml listviewitem

我目前正在创建一个充当任务跟踪器的Windows 8.1商店应用。我目前的问题是我想更改listview中列出的项目来表示它们的优先级。我想通过改变背景颜色来做到这一点。 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>

我能找到的所有示例似乎都是使用过时的Store Apps版本完成的。设置触发器似乎是建议的路线,但它似乎不再适用于更新版本。下面是我的ListView代码的片段。如果优先级文本框的值为“低”,如何修改它以使其仅将背景颜色更新为绿色?

<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>

1 个答案:

答案 0 :(得分:1)

您可以使用ItemTemplateSelector

指定哪个优先级应使用哪个tempalte

ItemTemplateSelector允许ListView根据您作为参数提供的属性呈现不同的模板。这是AFAIK的最佳实践解决方案。