Я нахожусь в процессе создания пользовательского интерфейса, центральным компонентом которого является средство прокрутки, содержащее панель стека с переменным количеством элементов. Если на экране недостаточно места, появляются кнопки слева и справа, позволяющие перемещаться по панели стека с помощью средства просмотра прокрутки. Обратите внимание, что все предметы имеют одинаковый размер.
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="LeftButton" Width="Auto"/>
<ColumnDefinition x:Name="Content" Width="*"/>
<ColumnDefinition x:Name="RightButton" Width="Auto"/>
</Grid.ColumnDefinitions>
Это работает нормально. Однако теперь я должен отображать только полные / полные элементы. Поэтому, если в панели стека больше элементов, чем я могу отобразить на экране, я не хочу, чтобы отображались элементы справа или слева. Я просто хочу, чтобы моя кнопка прокрутки появилась, указывая на то, что доступно больше элементов.
Таким образом, если дочерний элемент добавлен в панель стека, средство просмотра прокрутки, содержащее панель стека, должно увидеть, достаточно ли места на экране для отображения всех элементов. Если нет, то следует уменьшить его ширину, чтобы следующий (частично видимый) элемент был скрыт.
Мой вопрос: как лучше всего определить, все ли элементы в стеке могут отображаться на экране. И если нет, то как я могу добиться скрытия частично отображаемых элементов?
Я поэкспериментировал с шириной самого Scrollviewer, полагаясь на событие SizeChanged , но я не уверен, что это самый мудрый метод для достижения такого поведения. Лучше определить MaxWidth прокрутки при инициализации, установить его соответствующим образом и позволить ему расти?
Спасибо заранее,
Любопытство