C# Datagrid奇怪的视觉效果
为什么我的C# Datagrid奇怪的视觉效果,c#,wpf,visual-studio,datagrid,C#,Wpf,Visual Studio,Datagrid,为什么我的DataGrid看起来像这样? 我一直在添加一些风格,我有一些“副作用”。缺了几行,各处的颜色都不一样(中间较浅)。 这是datagrid的xaml: <DataGrid x:Name="dataGrid" RowHeaderWidth="0" CanUserResizeRows="False" HorizontalScrollBarVisibility="Disabled" BorderThickness="0" GridLinesVisibility="None" Hei
DataGrid
看起来像这样?
我一直在添加一些风格,我有一些“副作用”。缺了几行,各处的颜色都不一样(中间较浅)。
这是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 >
样式中有什么东西把它弄乱了吗?您提供的上述代码似乎很好。这可能有一些定义,比如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>
您可以根据自己的选择更改颜色
或者,颜色在没有任何输入的情况下变浅(单击)?你能解释更多吗?找到了一个解决方案,使它看起来更好看 xaml:
如图所示,网格的颜色有所不同。有些颜色较深,有些颜色较浅。我会投票支持你,因为你的例子给了我一些想法,但我找到了解决方案,使它变得更好。我将发布一个带有图片和xaml的答案。很高兴知道你找到了解决方案。似乎正在利用鼠标事件。作为提示,我认为您的DataGrid不需要用户编辑,设置Readonly可能可以避免用户的误用。我也会对你的问题投赞成票。希望你一如既往地做得很好!
<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>
<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 >