WPF / MVVM DataGrid - показывает одну горизонтальную линию сетки, хотя GridLinesVisibility имеет значение False - PullRequest
1 голос
/ 14 января 2020

У меня есть DataGrid, который показывает одну фиксированную горизонтальную линию (линию сетки?) После 9-й записи в списке. При прокрутке списка строка остается фиксированной и не прокручивается вместе со списком. Даже когда я установил GridLinesVisibility="None", я все еще вижу линию, сидящую там. Если я добавлю границу к DataGridRow, соответствующая линия, кажется, останется посередине между строками, как если бы это была линия сетки или какая-то разделительная линия.

Это какой-то известный артефакт или я схожу с ума?

Это моя DataGrid:

       <DataGrid Grid.Row="1" 
                  GridLinesVisibility="None"
                  AutoGenerateColumns="False"
                  CanUserAddRows="False" 
                  CanUserDeleteRows="False"
                  IsReadOnly="True"
                  ItemsSource="{ Binding Path=Users }"
                  SelectedItem="{ Binding SelectedUser, Mode=TwoWay }" >   <!-- SelectedIndex="{ Binding SelectedRowIndex }" -->
            <DataGrid.Columns>
                <DataGridTextColumn Header="User ID" Binding="{Binding UserID}" Width="Auto"/>
                <DataGridTextColumn Header="Initials" Binding="{Binding Initials}" Width="Auto"/>
                <DataGridTextColumn Header="Surname" Binding="{Binding Surname}" Width="Auto"/>
                <DataGridTextColumn Header="Given Names" Binding="{Binding GivenNames}" Width="Auto"/>
                <DataGridTextColumn Header="Active" Binding="{Binding Active, Converter={ StaticResource booleanToYesNoConverter} }" Width="Auto">
                    <DataGridTextColumn.CellStyle>
                        <Style TargetType="{x:Type DataGridCell}">
                            <Setter Property="Background" Value="{ Binding Active, Converter={ StaticResource activeInactiveBackgroundColorConverter }}"/>
                        </Style>
                    </DataGridTextColumn.CellStyle>
                </DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>

Большое спасибо за помощь.


Отредактировано: После возиться с этой проблемой немного больше, я обнаружил, что если я начну с пустой сетки данных, а затем добавлю по одной записи за раз, кажется, что таинственная линия - это просто цвет фона сетки данных, показывающий между записями на 9-й и 10-й позиции вниз по видимая часть списка (что находится в окне просмотра). Затем, если я установлю прозрачный цвет фона сетки данных, линия больше не будет отображаться:

    <Style TargetType="DataGrid">
        <Setter Property="Background" Value="Transparent"/>
    </Style>

Это действительно странно. У кого-нибудь есть объяснение этому?

1 Ответ

1 голос
/ 14 января 2020

Это может быть связано с математикой макета, создающей небольшой разрыв. Попробуйте установить UseLayoutRounding="True" и / или SnapsToDevicePixels="True" в вашей DataGrid, чтобы увидеть, устраняет ли это проблему go.

В моих общих стилях я установил UseLayoutRounding="True" на Window s, чтобы устранить размытые линии и другие вопросы макета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...