Как узнать, когда ItemsControl переполнился своим ScrollViewer? - PullRequest
0 голосов
/ 07 октября 2009

Как можно поменять шаблон с помощью триггера, когда элементы в ItemsControl переполняют его контейнер?

В моей текущей реализации я хотел бы показать более краткую форму шаблона, основанную на том, является ли текущее состояние ItemsControl таким, чтобы содержимое вызывало появление полос прокрутки ScrollViwer, если видимость полосы прокрутки была установлена ​​на Авто. Так что меня интересует любое свойство в ScrollViewer или ItemsControl, которое может дать мне подсказку о том, переполняет ли оно ScrollViewer. Если мне придется использовать какой-то пользовательский ValueConverter, чтобы создать разумное логическое значение для привязки, я думаю, это тоже будет хорошо.

1 Ответ

1 голос
/ 07 октября 2009

Хорошо, так что я сам придумал это.

В моем случае я использую логическую прокрутку, а не физическую прокрутку, и, поскольку у меня горизонтальная компоновка, все, что мне нужно было сделать, - это запустить ScrollViewer.ScrollableWidth. Секретом того, как это работает в моем случае, было убедиться, что я установил ScrollViewer.Hor HorizontalScrollBarVisibility в Hidden, а не в Disabled. Это позволит прокрутить содержимое и сделать так, чтобы свойство scrollableWidth действительно имело значимое значение.

Примечание: Любопытно, что установка HorizontalScrollBarVisibility в Hidden, кажется, визуально сворачивает полосу прокрутки, поэтому я не совсем уверен, в чем разница между Collapse и Hidden в этом случае.

...