[c#] Stackpanel에 ScrollBar를 추가하는 방법
내 WPF 응용 프로그램에는 내부에 여러 컨트롤이 포함 된 Stackpanel이 있습니다. 이 스택 패널에 스크롤바를 추가하려면 어떻게해야합니까?
답변
에 넣어 ScrollViewer
.
답변
Stackpanel에는 스크롤 메커니즘이 내장되어 있지 않지만 항상 ScrollViewer에서 StackPanel을 래핑 할 수 있습니다.
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel ... />
</ScrollViewer>
답변
다음과 같이 작동합니다.
<ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Disabled" Width="340" HorizontalAlignment="Left" Margin="12,0,0,0">
<StackPanel Name="stackPanel1" Width="311">
</StackPanel>
</ScrollViewer>
TextBox tb = new TextBox();
tb.TextChanged += new TextChangedEventHandler(TextBox_TextChanged);
stackPanel1.Children.Add(tb);
답변
가로 방향의 StackPanel의 경우 두 스크롤바 가시성을 명시 적으로두면 가로 스크롤바를 얻을 수있었습니다.
<ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" >
<StackPanel Orientation="Horizontal" />
</ScrollViewer>
답변
스택 패널에서 여러 항목을 스크롤하려면 주위에 그리드를 배치하십시오. 정의에 따라 스택 패널의 길이는 무한합니다.
따라서 다음과 같이 시도하십시오.
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel Width="311">
<TextBlock Text="{Binding A}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontStretch="Condensed" FontSize="28" />
<TextBlock Text="{Binding B}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
</StackPanel>
</Grid>
ScrollViewer로이 작업을 수행 할 수도 있습니다.