Как добавить полосу прокрутки в окно в C # - PullRequest
21 голосов
/ 20 мая 2011

Я создал окно следующим образом:

Window myWindow = new Window();

Как добавить вертикальную полосу прокрутки к этим окнам и сделать полосу прокрутки видимой, только если высота не достаточно велика, чтобы показать всеэлементы.

Ответы [ 3 ]

54 голосов
/ 20 мая 2011

Вы можете добавить элемент ScrollViewer в свое окно и поместить необходимые элементы управления в элемент управления ScrollViewer .

<ScrollViewer VerticalScrollBarVisibility="Auto">
    ...
</ScrollViewer>

Или, если вы хотите закодировать его в файле с выделенным кодом, вы можете написать

ScrollViewer viewer = new ScrollViewer();
viewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
// append scroll viewer to window
2 голосов
/ 20 мая 2011

Вы не можете добавить полосу прокрутки к самому окну.Вы можете добавить только полосы прокрутки к элементам управления.IE для сетки внутри вашего окна.

Пример:

<Grid  ScrollViewer.CanContentScroll="True"
       ScrollViewer.HorizontalScrollBarVisibility="Auto">
   ...
</Grid>

РЕДАКТИРОВАНИЕ:

Только что понял, что Window также имеет свойство ScrollViewer.Я не уверен, как это свойство работает для окна и как такое окно будет выглядеть.Попробуйте, но полосы прокрутки не отображаются.

РЕДАКТИРОВАТЬ 2:

ScrollViewer sv = new ScrollViewer();
sv.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
myGrid.Children.Add(sv);
0 голосов
/ 08 декабря 2017

попробуйте

var xpage = your user control or page to which scroll bar need to be added at runtime

            xpage.SetValue(ScrollViewer.CanContentScrollProperty, true);
            xpage.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Auto);
            xpage.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, ScrollBarVisibility.Auto);

            var scrollViewer = xpage.Content as ScrollViewer;
            if (scrollViewer != null)
            {
                var content = scrollViewer.Content;
                scrollViewer.Content = null;
                xpage.Content = content;
            }
            else
            {
                var content = xpage.Content;
                xpage.Content = null;
                xpage.Content = new ScrollViewer { Content = content };
            }
...