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