GridView中的XAML白色条纹

时间:2016-08-10 00:13:04

标签: c# wpf gridview

所以我实际上有2个问题。第一个是我的GridView中的白色条纹,我不知道如何摆脱它。然后第二个问题是CollumnHeader的宽度并没有真正延伸。

这是一张图片:

enter image description here

这是我的代码:

<UserControl x:Class="PROShine.TeamView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:PROShine"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
    <Style x:Name="ListviewStyle" TargetType="ListView">
        <Setter Property="Background" Value="#FF0d0d0d" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="BorderBrush" Value="#FF1e1e1e" />
        <Setter Property="BorderThickness" Value="1,1,1,1" />
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
    <Style x:Name="GridViewStyle" TargetType="GridViewColumnHeader">
        <Setter Property="Background" Value="#FF111111" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="BorderBrush" Value="#FF1e1e1e" />
        <Setter Property="BorderThickness" Value="1,0,1,0" />
        <Setter Property="Margin" Value="0,0,0,0" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="BorderBrush" Value="#FF171717"/>
                <Setter Property="Visibility" Value="Visible"/>
                <Setter Property="Background"  Value="Transparent"/>
            </Trigger>
            <Trigger Property="IsPressed" Value="true">
                <Setter Property="BorderBrush" Value="#FF171717"/>
                <Setter Property="BorderBrush" Value="#FF171717"/>
                <Setter Property="Visibility" Value="Visible"/>
                <Setter Property="Visibility" Value="Hidden"/>
                <Setter Property="Margin" Value="1,1,0,0"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>

<Grid>
    <ListView Name="PokemonsListView">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}"/>
                <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/>
                <GridViewColumn Header="Level" DisplayMemberBinding="{Binding Experience.CurrentLevel}"/>
                <GridViewColumn Header="Status" DisplayMemberBinding="{Binding Status}"/>
                <GridViewColumn Header="HP" DisplayMemberBinding="{Binding Health}"/>
                <GridViewColumn Header="Remaining Exp" DisplayMemberBinding="{Binding Experience.RemainingExperience}"/>
                <GridViewColumn Header="Item" DisplayMemberBinding="{Binding ItemHeld}"/>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>

我已经尝试将Margin设置为0,在大多数组件上将Width设置为auto,但这没有帮助。此外,为每个组件更改ForeColor并没有显示我来自哪里的条纹... 我已经看到了一些关于此问题的其他StackOverflow问题,但是他们有大量的代码,我不明白或者知道它们是如何工作的。

任何人都可以向我解释这些条纹的来源。 并且可能提供一个代码,以便我可以看到你将如何做到这一点。

1 个答案:

答案 0 :(得分:0)

这是我最终使用的。我从MSDN得到它并自己编辑了一下

    <Style x:Key="GridViewColumnHeaderGripper" TargetType="Thumb">
        <Setter Property="Width" Value="18"/>
        <Setter Property="Background" Value="{StaticResource SeperatorBrush}"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Thumb}">
                    <Border Padding="{TemplateBinding Padding}" Background="Transparent">
                        <Rectangle HorizontalAlignment="Center" Width="1" Fill="{TemplateBinding Background}"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

矩形部分正在制作条纹。现在如果你想保留那些的功能不要去sthotakura的评论,但将填充设置为透明。这样条纹就会消失,但你仍然会保留夹子/分离器。