首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# WPF - ListViewItem不能更改背景色。

C# WPF - ListViewItem不能更改背景色。
EN

Stack Overflow用户
提问于 2022-09-21 13:27:51
回答 1查看 41关注 0票数 1

改变前景是可能的,而且它是可行的,但是如果我改变了背景或者BorderBrush什么都没有发生(默认的蓝色背景颜色)--这是我的ListView xaml代码,我有遗漏什么吗?

代码语言:javascript
运行
复制
        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <Style.Resources>
                    <Style TargetType="{x:Type Border}">
                        <Setter Property="CornerRadius" Value="20"/>
                    </Style>
                </Style.Resources>

                <Setter Property="HorizontalContentAlignment" Value="Center"/>
                <Setter Property="Margin" Value="10, 5, 10, 0"/>
                <Setter Property="Height" Value="67" />
                <Setter Property="Width" Value="500"/>
                <Setter Property="Background" Value="#FFD9D9D9"/>

                <Style.Triggers>
                    <Trigger Property="IsSelected" Value="true">
                        <Setter Property="Background" Value="Red"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </ListView.ItemContainerStyle>
    </ListView>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-21 13:35:47

您需要复制默认模板并对其进行编辑才能更改背景颜色:

代码语言:javascript
运行
复制
<ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
        <Style.Resources>
            <Style TargetType="{x:Type Border}">
                <Setter Property="CornerRadius" Value="20"/>
            </Style>
        </Style.Resources>

        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="Margin" Value="10, 5, 10, 0"/>
        <Setter Property="Height" Value="67" />
        <Setter Property="Width" Value="500"/>
        <Setter Property="Background" Value="#FFD9D9D9"/>

        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ListViewItem}">
                    <ControlTemplate.Resources>
                        <Style x:Key="FocusVisual">
                            <Setter Property="Control.Template">
                                <Setter.Value>
                                    <ControlTemplate>
                                        <Rectangle Margin="2" StrokeDashArray="1 2" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" SnapsToDevicePixels="true" StrokeThickness="1"/>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                        <SolidColorBrush x:Key="Item.MouseOver.Background" Color="#1F26A0DA"/>
                        <SolidColorBrush x:Key="Item.MouseOver.Border" Color="#a826A0Da"/>
                        <SolidColorBrush x:Key="Item.SelectedActive.Background" Color="#3D26A0DA"/>
                        <SolidColorBrush x:Key="Item.SelectedActive.Border" Color="#FF26A0DA"/>
                        <SolidColorBrush x:Key="Item.SelectedInactive.Background" Color="#3DDADADA"/>
                        <SolidColorBrush x:Key="Item.SelectedInactive.Border" Color="#FFDADADA"/>
                    </ControlTemplate.Resources>
                    <Border x:Name="Bd" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" Value="True"/>
                            </MultiTrigger.Conditions>
                            <Setter Property="Background" TargetName="Bd" Value="{StaticResource Item.MouseOver.Background}"/>
                            <Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource Item.MouseOver.Border}"/>
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="Selector.IsSelectionActive" Value="False"/>
                                <Condition Property="IsSelected" Value="True"/>
                            </MultiTrigger.Conditions>
                            <Setter Property="Background" TargetName="Bd" Value="{StaticResource Item.SelectedInactive.Background}"/>
                            <Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource Item.SelectedInactive.Border}"/>
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="Selector.IsSelectionActive" Value="True"/>
                                <Condition Property="IsSelected" Value="True"/>
                            </MultiTrigger.Conditions>
                            <Setter Property="Background" TargetName="Bd" Value="{StaticResource Item.SelectedActive.Background}"/>
                            <Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource Item.SelectedActive.Border}"/>
                        </MultiTrigger>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="TextElement.Foreground" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ListView.ItemContainerStyle>

查看模板中的SolidColorBrush资源,并根据您的需求编辑它们。

直接在Trigger中使用Style将无法工作,因为默认模板是如何定义的。有关更多信息,请参考博客文章。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73801590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档