Как заставить разрыв между нулевыми пикселями в последовательных ячейках в WPF DataGrid - PullRequest
6 голосов
/ 31 октября 2011

Я создаю приложение в WPF для пользовательских нужд. Сначала я выбрал пользовательские элементы управления, но позже выяснил, что многое из того, что мне было нужно, уже реализовано в Datagrid Control. Однако есть один маленький глюк:

Проблема с датагридом заключается в том, что он обеспечивает минимальный разрыв 2 пикселя между двумя последовательными ячейками (по 1 на каждой стороне линии сетки). Пожалуйста, взгляните на следующую диаграмму для ясности:

. Обратите внимание, что зазор между двумя последовательными ячейками обеспечивает разрыв в 2 пикселя: http://img265.imageshack.us/img265/3545/figurem.png

(Переполнение стека не позволило бы мне добавить изображение к моему вопросу со ссылкой на политику защиты от спама для новых пользователей)

.

Это не соответствует моим требованиям, так как я хочу, чтобы содержимое выглядело "непрерывным" (не должно быть этого промежутка в 2 пикселя; я хочу, чтобы соединительные линии выглядели "подключенными"). Я пытался суетиться с GridLinesVisibility, но это не помогло. DataGrid содержит пользовательский элемент управления, подобный следующему:

<DataGrid.Columns>
            <DataGridTemplateColumn Width="25" Header="">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ContentControl Content="{Binding Path=MyCustomControl}" Margin="0"></ContentControl>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

....
</DataGrid.Columns>

я уже пробовал:

  1. Отключение GridLine (см. Результат здесь: http://img263.imageshack.us/img263/8602/figure2j.png)
  2. Установка поля свойства содержимого равным 0.
  3. Поиск в Google и stackoverflow
  4. Посоветовался с некоторыми книгами.

но ничего не получается.

Есть ли решение для этого / некоторого взлома или обходного пути, или мне придется создавать все с нуля? У меня есть приличный опыт работы с c #, но я новичок в WPF.

Пожалуйста, помогите.

1 Ответ

5 голосов
/ 31 октября 2011

Что вам нужно сделать, так это получить стиль DataGridCell для вашей DataGrid и установить для BorderThickness значение 0. Он жестко задан как 1 в стиле по умолчанию, но, к счастью, это легко переопределить:

Я бы предложил добавить это в ресурсы вашей DataGrid, чтобы она влияла только на эту одну сетку, если только вы не хотите, чтобы она имела более широкий охват, чем эта.это также зависит от ваших конкретных потребностей.

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