[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로이 작업을 수행 할 수도 있습니다.


답변