Я пытаюсь добавить ScrollViewer в MenuItem, который содержит много элементов, но это доставляет мне некоторые проблемы с высотой в том смысле, что оно кажется фиксированным и показывает только один из элементов и часть полосы прокрутки.
Поскольку элемент MenuItem создается, а затем передается некоему устаревшему коду, который создает само меню, я подозревал, что это может быть какой-то стиль, применяемый в другом месте, но также обнуление стиля для всех используемых элементов не работает.
Это минимальный прототип кода, который я использую.Примите во внимание, что это работает, как и ожидалось, в отдельном тестовом проекте, единственное отличие состоит в том, что в официальном коде я передаю MenuItem в наследство.
var items = new[] {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
var newSubMenu = new MenuItem { Header = "New Sub Menu", Style = null };
var scrollViewer = new ScrollViewer
{
VerticalScrollBarVisibility = ScrollBarVisibility.Visible,
Height = 100
};
newSubMenu.Items.Add(scrollViewer);
var stackPanel = new StackPanel();
scrollViewer.Content = stackPanel;
foreach (var item in items)
{
var subIt = new MenuItem {Header = item};
stackPanel.Children.Add(subIt);
}
RootMenu.Items.Add(newSubMenu);