web-dev-qa-db-ja.com

C#でウィンドウにスクロールバーを追加する方法

次のようにウィンドウを作成しました。

Window myWindow = new Window();

このウィンドウに垂直スクロールバーを追加して、高さがすべての要素を表示するのに十分な大きさでない場合にのみスクロールバーを表示する方法を教えてください。

21
Shamim Hafiz

ScrollViewer 要素をウィンドウに追加し、必要なコントロールをScrollViewerコントロールに配置できます。

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

または、コードビハインドファイルでコーディングする場合は、次のように記述できます。

ScrollViewer viewer = new ScrollViewer();
viewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
// append scroll viewer to window
55
Osiris76

ウィンドウ自体にスクロールバーを追加することはできません。コントロールに追加できるのはスクロールバーだけです。 I.E.ウィンドウ内のグリッドに。

例:

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

編集:

WindowにもScrollViewerプロパティがあることがわかりました。このプロパティがウィンドウに対してどのように機能するか、またそのようなウィンドウがどのように見えるかわかりません。試してみましたが、スクロールバーは表示されません。

編集2:

ScrollViewer sv = new ScrollViewer();
sv.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
myGrid.Children.Add(sv);
2
Christian

これを試して

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 };
            }
0
NidhinSPradeep