Как я могу контролировать толщину горизонтальной или вертикальной Scrollbar
, которая отображается в / как часть элемента управления DataGrid
?
Я хотел бы, чтобы они отображались «толще», чем то, что отображается в данный момент.
Примечание. Чтобы показать пример приложения с фиктивными данными в DataGrid
, приведенные ниже снимки экрана основаны на примере приложения «Xaml brewer», которое вы можете найти здесь.
У меня есть DataGrid
, который всегда показывает вертикальные и горизонтальные полосы прокрутки (я удалил весь несущественный код XAML):
<Page
xmlns:controls = "using:CommunityToolkit.WinUI.UI.Controls"
mc:Ignorable = "d">
<Grid>
<controls:DataGrid AutoGenerateColumns = "False"
VerticalScrollBarVisibility = "Visible"
HorizontalScrollBarVisibility = "Visible">
<controls:DataGrid.Columns>
</controls:DataGrid.Columns>
</controls:DataGrid>
</Grid>
</Page>
Так обычно отображаются полосы прокрутки, т. е. DataGrid имеет фокус, но мышь в данный момент не зависает над одной из полос прокрутки. Они отображаются очень тонко, так что пользователи моего приложения иногда их не узнают:
Вот как отображается Scrollbar
, когда мышь в данный момент находится над одним из них (в данном случае это горизонтальная полоса прокрутки внизу). Теперь этот отображается немного толще и, следовательно, его легче увидеть:
Есть ли способ отобразить полосы прокрутки толще/установить их толщину или указать, что они всегда должны отображаться так, как они отображаются при наведении на них курсора (см. второй скриншот выше, в этом случае они отображаются толще)?
Есть ли способ отобразить полосы прокрутки толще/установить их толщину
Возможно, вы сможете изменить стиль ScrollBar
, но пустой стиль ScrollBar
должен дать вам WPF-подобный ScrollBar
.
<controls:DataGrid>
<controls:DataGrid.Resources>
<Style TargetType = "ScrollBar" />
</controls:DataGrid.Resources>
</controls:DataGrid>
указать, что они всегда должны отображаться так, как они отображаются при наведении на них курсора
Для этого я опубликовал пакет NuGet под названием AK.Toolkit.WinUI3.ScrollBarExtensions. Попробуйте и посмотрите, соответствует ли он вашим требованиям.
<Page
:
xmlns:controls = "using:CommunityToolkit.WinUI.UI.Controls"
xmlns:toolkit = "using:AK.Toolkit.WinUI3" />
<controls:DataGrid
toolkit:ScrollBarExtensions.KeepHorizontalExpanded = "True"
toolkit:ScrollBarExtensions.KeepVerticalExpanded = "True"
HorizontalScrollBarVisibility = "Visible"
VerticalScrollBarVisibility = "Visible" />
</Page>
Я еще немного протестировал свойства KeepExpanded. Кажется, что они применяются правильно при первой загрузке пользовательского интерфейса, но затем он возвращается к стандартному «нерасширенному» режиму.
Странный. Невозможно воспроизвести его в образце приложения. Вы имеете в виду, что если вы оставите его на некоторое время, ScrollBar
спрячется? Буду очень признателен, если вы опубликуете проблему в репозитории GitHub.
Я не совсем уверен. Что я могу вам сказать, так это то, что у меня есть «Страница», которая использует NavigationCacheMode.Required для хранения своих данных. Когда я вижу страницу в первый раз, просмотрщики прокрутки расширяются правильно. Но когда я перехожу на другую страницу, а затем повторно перехожу на первую страницу, прокрутки больше не расширяются. Хорошо, я опубликую проблему в репозитории GitHub.
Я разместил проблему в репозитории github: github.com/AndrewKeepCoding/AK.Toolkit/issues/44
Это исправлено в AK.Toolkit.ScrollBarExtensions v1.0.5. Спасибо за отзыв @Мартин!
Я протестировал ваш пакет nuget, и он работает очень хорошо, спасибо. Полосы прокрутки остаются в «расширенном» режиме при установке свойств «KeepExpanded», которые вы указали в своем примере. Спасибо :)