WPF DataGrid Thumb непрозрачность без назначения всего стиля полосы прокрутки - PullRequest
0 голосов
/ 06 апреля 2019

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

            <DataGrid.Resources>
                <Style TargetType="Thumb">
                    <Setter Property="Opacity" Value="0.5"/>
                </Style>
            </DataGrid.Resources>

не работает, а

            <DataGrid.Resources>
                <Style TargetType="ScrollBar">
                    <Setter Property="Track.Thumb.Opacity" Value="0.5"/>
                </Style>
            </DataGrid.Resources>

выдает «ошибки вложенных типов не поддерживаются».

Или, возможно, из-за кода можно написать что-то вроде

myGrid.VerticalScrollBar.Track.Thumb.Opacity = 0.5;

(но проблема в том, что сетка не имеет такого свойства ..)

1 Ответ

1 голос
/ 06 апреля 2019

Вы можете использовать решение CrimsonX , чтобы получить ScrollBar во время выполнения по его имени PART_VerticalScrollBar :

ScrollBar scrollBar = FindChild<ScrollBar>(myGrid, "PART_VerticalScrollBar");
scrollBar.Track.Thumb.Opacity = 0.1;

Обратите внимание, что это работает, только еслиWindow уже отображается.Это означает, что после рендеринга можно установить опатичность кода.Один из способов сделать это - переопределить:

protected override void OnContentRendered(EventArgs e)
...