次のようにウィンドウを作成しました。
Window myWindow = new Window();
このウィンドウに垂直スクロールバーを追加して、高さがすべての要素を表示するのに十分な大きさでない場合にのみスクロールバーを表示する方法を教えてください。
ScrollViewer 要素をウィンドウに追加し、必要なコントロールをScrollViewerコントロールに配置できます。
<ScrollViewer VerticalScrollBarVisibility="Auto">
...
</ScrollViewer>
または、コードビハインドファイルでコーディングする場合は、次のように記述できます。
ScrollViewer viewer = new ScrollViewer();
viewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
// append scroll viewer to window
ウィンドウ自体にスクロールバーを追加することはできません。コントロールに追加できるのはスクロールバーだけです。 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);
これを試して
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 };
}