, , - StackPanel ScrollViewer. , . ( StackPanel?), 100%, .
<ScrollViewer Name="stackPanelScrollViewer"
Loaded="stackPanelScrollViewer_Loaded"
VerticalScrollBarVisibility="Auto">
<StackPanel CanVerticallyScroll="True" ClipToBounds="False" Height="Auto" Name="StackPanel2" Width="250" DockPanel.Dock="Left" Orientation="Vertical" VerticalAlignment="Top" CanHorizontallyScroll="False" Margin="5">
<Border BorderThickness="0" CornerRadius="5" Padding="1" BorderBrush="Red" Margin="0,5" >
<Expander Header="Expander3" Height="Auto" IsExpanded="False" Width="Auto" Margin="2" BorderThickness="1">
<Grid Height="Auto" Width="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" >
<TreeView Name="treeView1" Height="Auto" BorderThickness="1" Margin="0,0,0,0" Padding="7" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" >
</TreeView>
</Grid>
</Expander>
</Border>
</StackPanel>
</ScrollViewer>
, TreeView ScrollViewer, ControlTemplate, MouseWheel, TreeView. - MouseWheel TreeView
private void stackPanelScrollViewer_Loaded(object sender, RoutedEventArgs e)
{
treeView1.AddHandler(MouseWheelEvent, new RoutedEventHandler(StackPanelMouseWheel), true);
}
private void StackPanelMouseWheel(object sender, RoutedEventArgs e)
{
MouseWheelEventArgs eargs = (MouseWheelEventArgs)e;
double x = (double)eargs.Delta;
double y = stackPanelScrollViewer.VerticalOffset;
stackPanelScrollViewer.ScrollToVerticalOffset(y - x);
}