В XAML я могу сделать так:
<ListView x:Name="listView"
ItemsSource="{Binding ElementName=MainWindowName, Path=List}"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
/>
Это покажет ListView без полосы прокрутки, что мне нужно. Тем не менее, в моем случае мне нужно динамически добавлять ListViews (1-10) в качестве содержимого во всплывающем окне. Но единственный способ получить ScrollViewer в коде, который я нашел, - это обход визуального дерева, как в примерах здесь .
В коде я попробовал следующий код:
var listView = new ListView();
listView.ItemsSource = list;
popup.Child = listView;
var scroller = listView.GetVisualChild<ScrollViewer>();
Здесь скроллер нулевой. Но если я добавлю popup.IsOpen = true;
до получения скроллера, это работает. Я думаю, что это не удивительно, так как ListView не был добавлен ни в какое дерево? Конечно, показ всплывающего окна до того, как пользователь вызывает его, не возможен.
Можете ли вы предложить способ заставить это работать в коде - или, в качестве альтернативы, если есть способ динамически создавать ListViews в XAML.