WPF ListViewItem 颜色不正确

2024-03-21

我设置了一个非常基本的测试来解决我在使用 Visual Studio 2012 并在 Windows 8.1 上运行的针对 .NET Framework 4 的 WPF 中遇到的颜色问题。

问题在于 IsSelected 和 IsMouseOver 触发器属性在屏幕上产生不正确的颜色,而 Snoop 显示正确的值。屏幕上显示的实际颜色更加“褪色”。也就是说,它们看起来比应有的要轻。一个显示为 #E5F3FB,另一个显示为 #CBE8F6,但我没有在 XAML 中使用这两种颜色。

屏幕截图:我不得不在这里做一些猴子生意,因为 Snoop 更改了所选项目的背景颜色。您在这里看到的是用户在没有运行 snoop 的情况下看到的内容。您可以看到 Snoop 指示较深的蓝色,这才是它应该的样子。

现在这是我的代码(仅保留在屏幕上生成四个项目所需的一小部分代码,如果有帮助,我很乐意发布)。

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    xmlns:local="clr-namespace:ColorTest"
    x:Class="MainWindow" Name="MainWindow" WindowStartupLocation="CenterScreen" >
    <Grid>
        <ListView Name="GroupsListView"  
                          BorderThickness="0" >
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="BorderThickness" Value="0"/>
                    <Setter Property="Background" Value="#777777" />
                    <Setter Property="Foreground" Value="White" />
                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="BorderThickness" Value="0"/>
                            <Setter Property="Background" Value="#0072C6" />
                        </Trigger>

                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="BorderThickness" Value="0"/>
                            <Setter Property="Background" Value="#2A8DD4" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}"
                               ItemWidth="{Binding (ListView.View).ItemWidth, RelativeSource={RelativeSource AncestorType=ListView}}"
                               MinWidth="{Binding ItemWidth, RelativeSource={RelativeSource Self}}"
                               ItemHeight="{Binding (ListView.View).ItemHeight, RelativeSource={RelativeSource AncestorType=ListView}}" />
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid Width="140" Height="25">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>
                        <Label Content="{Binding Name}" ToolTip="{Binding Name}" VerticalAlignment="center" HorizontalAlignment="Center"/>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</Window>

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF ListViewItem 颜色不正确 的相关文章

随机推荐