UWP: как я могу исключить полосу прокрутки GridView из перекрывающегося содержимого?

#uwp #uwp-xaml

#uwp #uwp-xaml

Вопрос:

Я добавил GridView компонент в UWP Page , аналогичный этому:

 <Page>
  <GridView ItemsSource="{x:Bind CdList}">
  ...
  </GridView>
</Page>
  

Когда я меняю размер окна, я замечаю, что GridView вертикальная полоса прокрутки частично скрывает / перекрывает крайние правые элементы в GridView before GridView соответствующим образом оборачивает элементы:

Холст, скрытый полосой прокрутки

Доступно ли какое-либо GridView свойство, позволяющее GridView переносить его элементы прямо перед тем, как они будут перекрыты полосой прокрутки?

Ответ №1:

Основная часть GridView состоит из a ScrollViewer и an ItemsPresenter , которые отображают содержимое элемента. Таким образом, полоса прокрутки принадлежит к ScrollViewer , которая «покрыта» информацией о содержимом.

Поскольку эти два элемента управления не находятся на одном уровне, не существует API для предотвращения «перекрытия» полосой прокрутки содержимого.

В качестве обходного пути мы можем использовать GridView.Padding для резервирования места для полосы прокрутки. Потому что в шаблоне элемента управления по умолчанию Padding свойство привязано к ItemsPresenter .

 <GridView Padding="0,0,16,0">
    <!--Other code-->
</GridView>
  

PS Ширина вертикальной полосы прокрутки по умолчанию равна 16