UWP C# - listview change" item"背景颜色取决于值(不是整行)

时间:2017-01-04 16:12:03

标签: c# listview uwp

以下代码在向listview加载行时只运行一次。 我的ListView项目只有2个值 - " x"和" n"。我希望项目(" cell")的值为" x"有背景色红色。 以下代码对我有两个问题: 1)我不想指定所有列/项(goodFH,位置等)以使" cell"红色,如果值=" x" (想要伪代码"如果当前单元格值=" x"那么红色") 2)args.ItemContainer.Background改变整个行背景而不是" cell"我希望!

{{1}}

任何帮助?希望这个问题是可以理解的!

1 个答案:

答案 0 :(得分:0)

据我所知,我们无法通过设置cell来更改ItemContainer.Background的背景。

我们应该能够在Grid中设置TextBlock,我们可以更改网格的背景。

我们也可以使用bind来设置Grid的Background。要将“GoodFH”绑定到Background,我们应该可以使用IValueConverter

例如:

MyValueConverters.cs代码:

public object Convert(object value, Type targetType, object parameter, string language)
{
    if (value.ToString() == "x")
    {
        return new SolidColorBrush(Colors.Red);
    }
    return new SolidColorBrush(Colors.Transparent);
}

public object ConvertBack(object value, Type targetType, object parameter, string language)
{
    return value;
}

XAML代码:

<Page.Resources>
    <local:MyValueConverters x:Key="MyConverter" />
</Page.Resources>

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ListView  Name="MyListView" ItemsSource="{x:Bind Cars}" ContainerContentChanging="listViewContentChange">
        <ListView.ItemTemplate>
            <DataTemplate x:DataType="local:Car">
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                    <StackPanel Orientation="Horizontal" Margin="20,20,0,0">
                        <Grid Background="{x:Bind GoodFH,Converter={StaticResource MyConverter}}">
                            <TextBlock  FontSize="18" Text="{x:Bind GoodFH}" HorizontalAlignment="Right" Height="20" Width="158"></TextBlock>
                        </Grid>
                        <Grid Background="{x:Bind Position,Converter={StaticResource MyConverter}}">
                            <TextBlock FontSize="18" Text="{x:Bind Position }" HorizontalAlignment="Right" Height="20" Width="78"></TextBlock>
                        </Grid>
                        <TextBlock FontSize="18" Text="{x:Bind PathFHfs}" HorizontalAlignment="Right" Height="20" Width="78"></TextBlock>
                        <TextBlock FontSize="18" Text="{x:Bind PathBHFlSp }" HorizontalAlignment="Right" Height="20" Width="78"></TextBlock>
                    </StackPanel>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</Grid>
相关问题