выпадающие из DropDownButton
уже содержит ScrollViewer
(она называется "SubMenuScrollViewer"
), поэтому прокручивая ее элементы поддерживаются вне коробки. Дело в том, что конкретный ScrollViewer
стилизовано иначе, чем по умолчанию ScrollViewer
- если мы говорим о вертикальной прокрутке, она имеет две кнопки выше и ниже списка, ответственную за прокрутку вверх и вниз, соответственно, как показано ниже:
Так что лучше всего использовать этот стиль ScrollViewer
, используя стиль по умолчанию, а не собственный. Просматривая MahApps.Metro source code, мы видим, что ScrollViewer
подключен для использования динамического ресурса с ключевым значением {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}
. Так что вам нужно сделать, это поставить стиль по умолчанию с помощью этого ключа для этого элемента управления:
<Controls:DropDownButton (...)>
<Controls:DropDownButton.Resources>
<Style x:Key="{ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}"
TargetType="{x:Type ScrollViewer}"
BasedOn="{StaticResource {x:Type ScrollViewer}}" />
</Controls.DropDownButton.Resources>
</Controls.DropDownButton>
Таким образом ScrollViewer
в раскрывающемся списке будет стиль со стилем по умолчанию поставляется с MahApps.Metro.
Я не использовал этот компонент, но во многих компонентах с прокруткой вы должны определить свойство высоты, прежде чем прокрутка будет работать. – Alex
@Alex Итак, я предполагаю, что мне нужно создать ItemContainerTemplate с высотой по умолчанию и появится прокрутка? – Unchained
Не обязательно. К сожалению, в WPF, где наблюдается прокрутка, похоже, существует довольно много непоследовательного поведения. – Alex