WPF DataGrid: как оставить дополнительное пространство с заполненными столбцами, чтобы избежать появления полосы прокрутки - PullRequest
1 голос
/ 26 мая 2011

Во-первых, название может быть не очень хорошим.

Я часто использую WPF 4 DataGrid. Одна особенность, которую я хотел бы иметь, состоит в том, чтобы выделить мышь над строкой. Моя первая попытка изменить цвет фона с помощью Trigger на DataGridRow. Однако существует конфликт с ячейками данных только для чтения, см. Мой другой пост здесь . Теперь следующая лучшая вещь, которую я могу сделать, это добавить рамку на указатель мыши над строкой. Это легко сделать с помощью этого стиля:

<Style TargetType="DataGridRow">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush" Value="Red"/>
        </Trigger>
    </Style.Triggers>
</Style>

Проблема в том, что некоторые из DataGrid имеют столбцы звездного размера, и на них обычно не отображается горизонтальная полоса прокрутки. Однако с этим стилем Trigger, поскольку он добавляет одну единицу границы, полоса прокрутки становится видимой, когда мышь находится над сеткой. Я думал, что это можно решить, если бы я мог сделать звездный столб немного меньше. Является ли это возможным? Или у тебя есть другая идея?

РЕДАКТИРОВАТЬ: Даже если я изменю значение толщины границы на "1 1 0 1" (чтобы сделать его без полей справа), полоса прокрутки все еще отображается.

1 Ответ

2 голосов
/ 26 мая 2011

Вы можете попробовать уменьшить поля DataGridRow.

<Style TargetType="DataGridRow">
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush" Value="Red"/>
            <Setter Property="Margin" Value="0,0,-2,0"/>
        </Trigger>
    </Style.Triggers>
</Style>

Два предостережения для значения, которое я дал: Правая линия границы не отображается, независимо от того, на что вы устанавливаете поле, хотя это может быть верно даже без установщика поля. И когда триггер активируется для вашей «последней» или «нижней» строки, заголовки столбцов сдвигаются (в этом случае все они немного сдвигаются вправо).

...