Stackpanel에 ScrollBar를 추가하는 방법


106

내 WPF 응용 프로그램에는 내부에 여러 컨트롤이 포함 된 Stackpanel이 있습니다. 이 스택 패널에 스크롤바를 추가하려면 어떻게해야합니까?

답변:


162

에 넣어 ScrollViewer.


감사. ScrollViewer를 둘러싼 후 전체 콘텐츠가 표시되지 않습니다. 높이와 너비를 자동으로 설정하려고했지만 운이 없습니다. 제한된 부분 만 표시해야하는 이유는 무엇입니까?
인 Shamim 피즈

5
나는 단서가 없다. 귀하의 질문은 잠재적 인 문제를 예상하기위한 약간의 세부 사항 인 두 문장 길이였습니다.
Joey

알겠습니다. 여는 태그를 잘못된 위치에 배치했습니다. 도움을 주셔서 감사합니다.
Shamim Hafiz 2011-06-06

간단하고 완벽한 대답.
David Piao

94

Stackpanel에는 스크롤 메커니즘이 내장되어 있지 않지만 항상 ScrollViewer에서 StackPanel을 래핑 할 수 있습니다.

<ScrollViewer VerticalScrollBarVisibility="Auto">
  <StackPanel ... />
</ScrollViewer>

3
글쎄, 여러 스크롤 관련 메서드를 StackPanel구현 IScrollInfo하고 제공합니다. "내장"스크롤 메커니즘이없는 것이 확실합니까?
OR Mapper

4
from msdn.microsoft.com/en-us/library/… ... "이 속성은 코드에서 사용하기위한 것이 아닙니다. 인터페이스 계약 (IScrollInfo)을 이행하기 위해 공개적으로 노출됩니다.이 속성을 설정해도 효과가 없습니다. 논리적 스크롤 대신 물리적 스크롤이 필요한 경우 StackPanel을 ScrollViewer에 래핑하고 CanContentScroll 속성을 false로 설정합니다. "
Skinner

11

다음과 같이 작동합니다.

<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);

0

가로 방향의 StackPanel의 경우 두 스크롤바 가시성을 명시 적으로두면 가로 스크롤바를 얻을 수있었습니다.

    <ScrollViewer VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" >
        <StackPanel Orientation="Horizontal" />
    </ScrollViewer>

1
이전 답변을 반복합니다.
vapcguy

-4

스택 패널에서 여러 항목을 스크롤하려면 주위에 그리드를 배치하십시오. 정의에 따라 스택 패널의 길이는 무한합니다.

따라서 다음과 같이 시도하십시오.

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


4
이 코드는 문맥에서 벗어났습니다. 종속성을 제거하여 추가 수정없이 코드를 사용할 수 있습니까?
Markus Jarderot 2011
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.