Отрегулируйте ширину прокрутки динамически - PullRequest
3 голосов
/ 08 февраля 2012

Я нахожусь в процессе создания пользовательского интерфейса, центральным компонентом которого является средство прокрутки, содержащее панель стека с переменным количеством элементов. Если на экране недостаточно места, появляются кнопки слева и справа, позволяющие перемещаться по панели стека с помощью средства просмотра прокрутки. Обратите внимание, что все предметы имеют одинаковый размер.

<Grid.ColumnDefinitions>
   <ColumnDefinition x:Name="LeftButton" Width="Auto"/>
   <ColumnDefinition x:Name="Content" Width="*"/>
   <ColumnDefinition x:Name="RightButton" Width="Auto"/>
</Grid.ColumnDefinitions>

Это работает нормально. Однако теперь я должен отображать только полные / полные элементы. Поэтому, если в панели стека больше элементов, чем я могу отобразить на экране, я не хочу, чтобы отображались элементы справа или слева. Я просто хочу, чтобы моя кнопка прокрутки появилась, указывая на то, что доступно больше элементов. Таким образом, если дочерний элемент добавлен в панель стека, средство просмотра прокрутки, содержащее панель стека, должно увидеть, достаточно ли места на экране для отображения всех элементов. Если нет, то следует уменьшить его ширину, чтобы следующий (частично видимый) элемент был скрыт.

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

Я поэкспериментировал с шириной самого Scrollviewer, полагаясь на событие SizeChanged , но я не уверен, что это самый мудрый метод для достижения такого поведения. Лучше определить MaxWidth прокрутки при инициализации, установить его соответствующим образом и позволить ему расти?

Спасибо заранее, Любопытство

1 Ответ

1 голос
/ 08 февраля 2012

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

...