c# - WPF DataGrid 中的虚线水平网格线

标签 c# .net wpf datagrid

有没有办法在 WPF 数据网格的水平网格线上画一条虚线?我到处搜索,似乎找不到具体的方法。可能解决此问题的一种解决方案是设置 Datagrid.RowStyle。我已经试过了,它会导致错误。我已将我的数据网格绑定(bind)到数据表。 2 列只是文本,第 3 列是图像列。对于此列,我使用了 DataGridTemplateColumn。文本 block 和图像。我希望你们能帮助我...如果你们想要我的代码示例,就在这里。

 <StackPanel>
                <dg:DataGrid Name="questionList"
                             HeadersVisibility="None"
                             AutoGenerateColumns="False"
                             Background="White"
                             Margin="42,32,43,0"
                             BorderThickness="0" 
                             GridLinesVisibility="Horizontal"
                             CanUserAddRows="False" 
                             HorizontalGridLinesBrush="#FFCCCCCC" 
                             MaxHeight="549" 
                             Cursor="Hand" 
                             PreviewMouseLeftButtonUp="questionnaireList_PreviewMouseLeftButtonUp">
                    <dg:DataGrid.CellStyle>
                        <Style TargetType="{x:Type dg:DataGridCell}">
                            <Setter Property="BorderThickness" Value="0"/>
                        </Style>
                    </dg:DataGrid.CellStyle>
                    <dg:DataGrid.RowStyle>
                        <Style TargetType="{x:Type dg:DataGridRow}">
                            <Setter Property="Background" Value="{Binding MyImage, Converter={x:Static my:StatusColorConverter.instance}}" />
                        </Style>
                    </dg:DataGrid.RowStyle>
                    <dg:DataGrid.Columns>
                        <dg:DataGridTemplateColumn Width="69*">
                            <dg:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock Margin="12,16,0,17" 
                                               FontSize="18" 
                                               Foreground="#0891F1" 
                                               Text="{Binding Path=Number}" 
                                               TextWrapping="Wrap"/>
                                </DataTemplate>
                            </dg:DataGridTemplateColumn.CellTemplate>
                        </dg:DataGridTemplateColumn>
                        <dg:DataGridTemplateColumn Width="601*">
                            <dg:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBlock FontSize="16" Foreground="#666666"
                                               Text="{Binding Path=Desc}"
                                               TextWrapping="Wrap"
                                               TextAlignment="Justify"
                                               Margin="0,16,0,17" />
                                </DataTemplate>
                            </dg:DataGridTemplateColumn.CellTemplate>
                        </dg:DataGridTemplateColumn>
                        <dg:DataGridTemplateColumn Width="117*">
                            <dg:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Image Source="{Binding Path=Imgs}" 
                                           Stretch="None" 
                                           VerticalAlignment="Top" 
                                           HorizontalAlignment="Right" 
                                           Margin="0,16,18,17" />
                                </DataTemplate>
                            </dg:DataGridTemplateColumn.CellTemplate>
                        </dg:DataGridTemplateColumn>
                    </dg:DataGrid.Columns>
                </dg:DataGrid>
            </StackPanel>

最佳答案

最简单的方法是简单地使用具有绝对映射模式的渐变画笔:

<DataGrid ItemsSource="{Binding People}">
    <DataGrid.HorizontalGridLinesBrush>
        <LinearGradientBrush StartPoint="0,0" EndPoint="3,0" MappingMode="Absolute" SpreadMethod="Repeat">
            <GradientStop Offset="0" Color="Black"/>
            <GradientStop Offset="0.5" Color="Black"/>
            <GradientStop Offset="0.5" Color="Transparent"/>
            <GradientStop Offset="1" Color="Transparent"/>
        </LinearGradientBrush>
    </DataGrid.HorizontalGridLinesBrush>
    <DataGrid.VerticalGridLinesBrush>
        <LinearGradientBrush StartPoint="0,0" EndPoint="0,3" MappingMode="Absolute" SpreadMethod="Repeat">
            <GradientStop Offset="0" Color="Black"/>
            <GradientStop Offset="0.5" Color="Black"/>
            <GradientStop Offset="0.5" Color="Transparent"/>
            <GradientStop Offset="1" Color="Transparent"/>
        </LinearGradientBrush>
    </DataGrid.VerticalGridLinesBrush>
    <DataGrid.Columns>
        <DataGridTextColumn Header="First Name"  Binding="{Binding FirstName}"/>
        <DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" />
    </DataGrid.Columns>
</DataGrid>

结果:

enter image description here

关于c# - WPF DataGrid 中的虚线水平网格线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310695/

相关文章:

c# - 使具有相同值的对象之间的 HashSet<MyType> 不同

c# - EF有时可以在成功写入后重试吗?

c# - 无法从 ASP.NET 中的目录查看最新文件

.net - WSDL 未定义时如何传递 Soap header ?

c# - 继承 : possible to change base reference to something else?

wpf - .Net 中的网络摄像头驱动程序,支持所有可用的网络摄像头

c# - Wpf控件显示html代码

wpf - 如何清除 MVVM 中的文本框?

c# - 减少保存在 View 状态属性中的代码行

c# - "An invalid or incomplete configuration was used while creating a SessionFactory"Web 服务中的 NHibernate