Как покрасить BorderBrush объекта DataGridRow и предыдущего - PullRequest
0 голосов
/ 29 ноября 2018

Я создал пользовательский элемент управления, унаследованный от DataGrid.Мне нужно изменить границу строк, когда мышь над.Легко.

За исключением того, что, если я установил BorderThick 0 1 0 1, нижняя и верхняя границы стека, и похоже, что есть 2 высоты на некоторых границах.=> enter image description here

Чтобы избежать этого, я установил 0 0 0 1 BorderThick, и теперь он стал сложным.Потому что мне нужно изменить BorderBrush предыдущей или следующей строки.И добавьте прямоугольник для первой границы.

Я закончил тем, что сделал это в событиях MouseMove и MouseLeave в моем пользовательском элементе управления.Это работает, но я чувствую себя грязно: D

Я спрашиваю, есть ли у кого-нибудь еще идеи о том, как это сделать?Предпочтительно 100% xaml.

Спасибо!

1 Ответ

0 голосов
/ 29 ноября 2018

Вы можете перекрывать Border с.Следующий XAML имеет BorderThickness из 1, а с Margin="0,0,0,-1" он будет перекрывать следующий.Но это не решит проблему полностью, потому что Row не находится спереди, поэтому ZIndex будет установлено на 1.

<DataGrid ItemsSource="{Binding YOURSOURCE}" GridLinesVisibility="None">
    <DataGrid.RowStyle>
        <Style TargetType="{x:Type DataGridRow}">
            <!-- Line at the Top and Bottom -->
            <Setter Property="BorderThickness" Value="0,1,0,1"/>
            <!-- Idle Color -->
            <Setter Property="BorderBrush" Value="Black"/>
            <!-- Overlap Row with negative Margin -->
            <Setter Property="Margin" Value="0,0,0,-1"/>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <!-- Bring to Front and change Line-Color -->
                    <Setter Property="Panel.ZIndex" Value="1" />
                    <Setter Property="BorderBrush" Value="Red"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </DataGrid.RowStyle>
</DataGrid>

Это будет выглядеть так:

Preview XAML

Это требует некоторой тонкой настройки, в зависимости от BorderThickness, но я надеюсь, что вы поняли эту концепцию.

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