WPF Listview选择删除主题

时间:2014-10-02 10:32:23

标签: c# wpf listview listviewitem

在我的WPF应用程序中,我有两个列表视图。一个常规的只有几个项目,另一个是GridView。

常规工作正常,如;我点击一个项目,它设置我指定的背景颜色。那里没有问题。

然而,Gridview似乎有一个完全不同的默认样式/主题。它将我选择的行显示为2种颜色的组合。

那么,他们为什么表现不同?更重要的是;如何为Gridview Listview提供与常规样式相同的样式?

我尝试过使用不同地方的代码,包括以下代码: Removing WPF ListView/GridView highlight chromeWPF ListBox turn off hover effect

无论我尝试什么,它仍然有一个带有2个颜色渐变的selecteditem行。

归功于YoupTube的链接 下面我添加了使用的样式,任何人都有一些改进,让我知道:)。

<!-- ListView w/ GridColumns -->
<Style x:Key="ListViewWithGridColumns" TargetType="ListView">
    <Style.Resources>
        <Style TargetType="GridViewColumnHeader">
            <Setter Property="Visibility" Value="Collapsed" />
        </Style>
    </Style.Resources>
    <Setter Property="Foreground" Value="DimGray" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListView">
                <Border CornerRadius="4" BorderThickness="1" BorderBrush="{DynamicResource SolidBorderBrush}">
                    <ItemsPresenter></ItemsPresenter>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <Style TargetType="ListViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListViewItem">
                            <Border CornerRadius="2" SnapsToDevicePixels="True" 
                                    BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
                                <Border Name="InnerBorder" CornerRadius="1" BorderThickness="1">
                                    <Grid>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="20" />
                                            <RowDefinition />
                                        </Grid.RowDefinitions>
                                        <Rectangle Name="UpperHighlight" Visibility="Collapsed" Fill="#75FFFFFF" />
                                        <GridViewRowPresenter Grid.RowSpan="2" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                                    </Grid>
                                </Border>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsSelected" Value="True">
                                    <Setter Property="Background" Value="DodgerBlue" />
                                    <Setter Property="Foreground" Value="WhiteSmoke" />
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Setter.Value>
    </Setter>
</Style>

0 个答案:

没有答案