Silverlight: не удается заставить ScrollViewer и WrapPanel работать вместе
Я использую WrapPanel для форматирования текста. Во время выполнения я добавляю TextBlocks и StackPanels как Дети. Очевидно, мне нужна полоса прокрутки в зависимости от размера данных. В поисках в Интернете я нашел несколько ответов, которые предлагают разместить ScrollViewer вокруг WrapPanel. Это имеет смысл для меня, но я не могу заставить его работать. Вот мой код:
scrollView = new ScrollViewer();
scrollView.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;
scrollView.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
scrollView.HorizontalAlignment = HorizontalAlignment.Stretch;
scrollView.VerticalAlignment = VerticalAlignment.Stretch;
scrollView.Margin = new Thickness(0);
scrollView.BorderThickness = new Thickness(0);
textPanel = new WrapPanel();
textPanel.Width = Width;
scrollView.Content = textPanel;
Это не работает. ScrollViewer, кажется, растет вместе с WrapPanel. Если установить вертикальную полосу прокрутки на видимую, я вижу, что полоса прокрутки увеличивается вместе с содержимым. Но ScrollViewer растет из содержащего окна, и поэтому полоса прокрутки не отображается никогда.
Любой намек, что я могу делать не так?
ура, Ахим
1 ответ
Вам нужно что-то, чтобы противоречить размеру WrapPanel и ScrollViewer - вы могли бы установить ширину и высоту средства просмотра, а затем использовать привязку элемента к оболочке:
<ScrollViewer x:Name="ScrollViewer1"
Width="200"
Height="200"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.HorizontalScrollBarVisibility="Visible" >
<controls:WrapPanel
Width="{Binding ElementName=ScrollViewer1, Path=Width}"
Height="{Binding ElementName=ScrollViewer1, Path=Height}">
Надеюсь, это поможет.
Ян