【问题标题】:XAML White stripes in GridViewGridView 中的 XAML 白色条纹
【发布时间】:2016-08-10 00:13:03
【问题描述】:

所以我实际上有两个问题。第一个是我的 GridView 中的白色条纹,我不知道如何摆脱它。那么第二个问题是 ColumnHeader 的宽度并没有真正拉伸。

这是一张图片:

这是我的代码:

<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>

我已经尝试在大多数组件上将边距设置为 0,将宽度设置为自动,但这并没有帮助。此外,更改每个组件的前景色并没有告诉我条纹来自哪里......

我已经看到了一些关于此问题的其他 StackOverflow 问题,但它们有或我不理解或不知道它们如何工作的大量代码。

谁能告诉我这些条纹是从哪里来的。 并且也许提供一个代码,以便我可以看到你会怎么做。

【问题讨论】:

  • 白色条纹是列标题分隔符。他们来自ControlTemplateGridViewColumnHeader。如果您想删除它们,您需要覆盖ControlTemplate。请参阅此answer。关于列的自动调整大小,请参阅answer
  • 啊,这就是模板的用途。谢谢你的回答对我很有意义:)

标签: c# wpf gridview


【解决方案1】:

这是我最终使用的。我从 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 的评论,而是将填充设置为透明。这样条纹会消失,但您仍将保留抓手/分离器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    相关资源
    最近更新 更多