Datagrid奇怪的视觉效果

时间:2016-05-09 00:12:32

标签: c# wpf visual-studio datagrid

为什么我的DataGrid看起来像这样? enter image description here

我一直在添加一些风格,我有一些" side"效果。有些线条缺失,着色并不是每个地方都相同(中间较浅)。 这是datagrid的xaml:

<DataGrid x:Name="dataGrid" RowHeaderWidth="0"  CanUserResizeRows="False" HorizontalScrollBarVisibility="Disabled" BorderThickness="0" GridLinesVisibility="None" Height="400" Width="800" HorizontalAlignment="Right" CanUserAddRows="True" Margin="0,210,0,0" Background="Transparent" Foreground="Gray">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Name"  CanUserResize="False" IsReadOnly="True" Binding="{Binding Path=Mp3Title}" Width="300" ></DataGridTextColumn>
                        <DataGridTextColumn Header="Download Info" CanUserResize="False" IsReadOnly="True"  Binding="{Binding Path=DownloadProgress}" Width="250"></DataGridTextColumn>
                        <DataGridTextColumn Header="State" CanUserResize="False" IsReadOnly="True"  Binding="{Binding Path=State}" Width="250"></DataGridTextColumn>
                    </DataGrid.Columns>
                    <DataGrid.Resources>
                        <Style TargetType="{x:Type DataGridColumnHeader}">
                            <Setter Property="Background" Value="Transparent" />
                            <Setter Property="Margin" Value="80,0" />
                        </Style>
                        <Style TargetType="{x:Type DataGridCell}">
                            <Setter Property="Background" Value="#FF181818"/>
                            <Setter Property="BorderThickness" Value="0"/>
                            <Setter Property="TextBlock.TextAlignment" Value="Left" />
                        </Style>
                    </DataGrid.Resources>
                </DataGrid >

我在textcolumns中添加项目的cs部分

GridInfo data = new GridInfo { Mp3Title = "Some item" ...etc... };
dataGrid.Items.Add(data);

样式中的东西搞砸了吗?

2 个答案:

答案 0 :(得分:2)

您提供的代码如上所示似乎没问题。可能有一些定义可能是Window.Resources

点击后变得更轻?然后,应用它可能是有用的。

<DataGrid.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FFFDFD0A"/>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
    <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#FFFDFD0A"/>
</DataGrid.Resources>

您可以根据需要更改颜色。

或者,没有任何输入(点击),颜色会变浅?你能解释一下吗?

答案 1 :(得分:0)

找到一个解决方案并使其看起来更好看 enter image description here

XAML:

<DataGrid x:Name="dataGrid" RowHeaderWidth="0"  CanUserResizeRows="False" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Disabled" BorderThickness="0" GridLinesVisibility="Horizontal" Height="200" Width="800" HorizontalAlignment="Right" CanUserAddRows="True" Margin="0,210,0,0" Background="Transparent" Foreground="Gray" MouseEnter="dataGrid_MouseEnter" MouseLeave="dataGrid_MouseLeave">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Name"  CanUserResize="False" IsReadOnly="True" Binding="{Binding Path=Mp3Title}" Width="300" ></DataGridTextColumn>
                        <DataGridTextColumn Header="Download Info" CanUserResize="False" IsReadOnly="True"  Binding="{Binding Path=DownloadProgress}" Width="250"></DataGridTextColumn>
                        <DataGridTextColumn Header="State" CanUserResize="False" IsReadOnly="True"  Binding="{Binding Path=State}" Width="250"></DataGridTextColumn>
                    </DataGrid.Columns>
                    <DataGrid.Resources>
                        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White"/>
                        <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="Gray"/>
                        <Style TargetType="{x:Type DataGridColumnHeader}">
                            <Setter Property="Background" Value="Transparent" />
                            <Setter Property="Margin" Value="80,10" />
                            <Setter Property="Height" Value="30"/>
                        </Style>
                        <Style TargetType="{x:Type DataGridCell}">
                            <Setter Property="Background" Value="#FF181818"/>
                            <Setter Property="BorderThickness" Value="0"/>
                            <Setter Property="TextBlock.TextAlignment" Value="Left" />
                            <Setter Property="Height" Value="30"/>
                        </Style>
                    </DataGrid.Resources>
                </DataGrid >