![](/img/trans.png)
[英]uwp: how to change background color of listview item based on its value?
[英]UWP C# - listview change “item” background color depending of value (not the entire row)
將行加載到列表視圖時,將運行以下代碼,僅發生一次。 我的ListView項只有2個值-“ x”和“ n”。 我希望值為“ x”的item(“單元格”)具有背景色Red。 以下代碼對我有2個問題:1)我不想指定所有列/項目(goodFH,Position等),以使“ cell”為紅色,如果value =“ x”(如果當前單元格為偽代碼,則為“偽代碼”) value =“ x”然后是Red“)2)args.ItemContainer.Background更改整個行背景,而不是希望的“ cell”!
private void listViewContentChange(ListViewBase sender, ContainerContentChangingEventArgs args)
{
if (((Binding.Car)args.Item).GoodFH == "x")
{
args.ItemContainer.Background = (SolidColorBrush)Application.Current.Resources["Red"];
}
else
{
if (((Binding.Car)args.Item).Position == "x")
{
args.ItemContainer.Background =(SolidColorBrush)Application.Current.Resources["red"];
}
}
}
<DataTemplate x:DataType="data:Car">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" Margin="20,20,0,0">
<TextBlock FontSize="18" Text="{x:Bind GoodFH}" HorizontalAlignment="Right" Height="20" Width="158"></TextBlock>
<TextBlock FontSize="18" Text="{x:Bind Position }" HorizontalAlignment="Right" Height="20" Width="78"></TextBlock>
<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>
有幫助嗎? 希望這個問題是可以理解的!
據我所知,我們無法通過設置ItemContainer.Background
來更改cell
的背景。
我們應該能夠在Grid中設置TextBlock
,以便我們可以更改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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.