2

WrapPanelを使用してテキストをフォーマットしています。実行時に、TextBlocksとStackPanelsを子として追加します。明らかに、データサイズに応じてスクロールバーが必要です。Webを検索すると、WrapPanelの周りにScrollViewerを配置することを提案する複数の回答が見つかりました。それは私には理にかなっていますが、私はそれを機能させることができません。これが私のコードです:

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は含まれているウィンドウから大きくなるため、スクロールバーは表示されません。

私が間違っているかもしれないことのヒントはありますか?

乾杯、アキム

4

1 に答える 1

3

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}">

お役に立てば幸いです。

イアン

于 2009-05-22T16:49:02.497 に答える