簡體   English   中英

UWP C#-listview根據值(而不是整行)更改“項目”背景顏色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM