Use the WPF ScrollViewer control to provide a scrollable area for sub-controls.
ScrollViewer. A ScrollViewer scrolls other controls. It is used as a container. We drag (or otherwise add) controls, nesting them inside the ScrollViewer. And then it automatically allows scrolling of the interior area.
To use a ScrollViewer please open the Toolbox and drag the control to your Window. The ScrollViewer is worthless with no internal controls. So try dragging some Button controls (or any control) to its interior area.
In this example, I added a StackPanel to the interior of the ScrollViewer. In a StackPanel, controls are "stacked" in one direction. Other controls, not just StackPanel work just as well within a ScrollViewer.StackPanel
Here: I dragged three Button controls to the ScrollViewer. I then added margin to the Buttons to make them larger in area.
Result: In the final program, the buttons can be scrolled up and down with the scroll bar located on the right of the window.
Discussion. ScrollViewer is a layout control. It requires you to add controls to it before it is useful. Once you do this, though, you get a region that expands as much as needed. This can lead to more versatile interfaces.
And: You won't need to redesign your entire program just to add another button or TextBlock description.
Sometimes when designing programs, a "Preferences" dialog (Options) is a burden. At first, these windows have few controls. So you can just add Buttons to a Grid. This is straightforward and easy.
But as time passes, the program becomes more complex. At that point, a ScrollViewer might be helpful. It will scroll as far as needed. Responsive layouts are easiest to work with.
Summary. WPF is full of useful controls. Many of them are only helpful in narrow contexts, though. A ScrollViewer is not needed in many programs. In Options Windows, or other complex dialogs, it has its place.