Как указать ListView ScrollViewer в коде, не показывая ListView - PullRequest
0 голосов
/ 29 июня 2018

В 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.

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете установить присоединенное свойство программно следующим образом:

ScrollViewer.SetVerticalScrollBarVisibility(listView, ScrollBarVisibility.Hidden);
...