2012-06-30 2 views
0

Silverlight를 사용하여 Windows Phone 7에 응용 프로그램을 작성하고 있습니다.그리드에 스크롤 막대를 추가 할 수 없습니다.

그리드 구성 요소에 스크롤 막대를 추가하는 데 3 시간을 소비 했으므로 코드에 동적으로 많은 것을 추가 할 때 스크롤하여 스크롤 할 수있었습니다.

내 XAML은 다음과 같습니다 : 코드에서 다음

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <ScrollViewer VerticalScrollBarVisibility="Visible" Name="Scrolling"> 
     <ScrollViewer.Content> 
      <Grid x:Name="myGrid" HorizontalAlignment="Left" Width="650" VerticalAlignment="Top" Height =" 300" Background="Red" Grid.Row="1" Margin="12,108,0,0"/> 
     </ScrollViewer.Content> 
    </ScrollViewer> 

    <Grid Grid.Row="1" Height="79" HorizontalAlignment="Left" Margin="0,405,0,0" Name="grid1" VerticalAlignment="Top" Width="728"> <!-- Not important --> 
    </Grid> 

    <Grid Grid.Row="1" Height="73" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid2" VerticalAlignment="Top" Width="704"> <!-- Not important --> 
    </Grid> 
</Grid> 

그리고 : 나는 많은, 많은 방법을 시도했지만, 아무도가 작동하지

myGrid.Children.Add(some_component); 

. 아무도 도와 줄 수 있습니까?

+0

애플리케이션의 나머지 공간을 작성하는 데 유용합니다? 난 단지 눈금을 볼 수 있습니다 ... – Charleh

+0

또한 스크롤 뷰어의 ContentProperty는 Content이므로 ScrollViewer.Content를 지정하지 않아도됩니다 ... 태그가 중복되어 있습니다. – Charleh

+0

내 데이터가 잘못되었지만 그리드가 아닙니다.그리고 ContentPropety에 대해서 - 저는 여러면에서이 문제를 해결하려고 노력했습니다. 그리고이 속성을 추가하는 방법 중 하나가 포함되었습니다. 여전히 문제는 해결되지 않습니다. Grid 구성 요소에 스크롤 막대를 추가하려면 어떻게합니까? – user1147467

답변

1

우선 RowDefinitionsColumnDefinitions을 업데이트해야하기 때문에 Grid에 동적으로 항목을 동적으로 추가 할 수 없습니다. 이러한 정의를 지정하지 않으면 해당 하위 항목이 제자리에 쌓입니다.

대신 StackPanel 또는 WrapPanel을 사용해보고 어린이가 충분한 공간을 차지하는 즉시 스크롤바를보아야합니다. 레이아웃이

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <Grid> 
     ...Static content here 
    </Grid> 
    <ScrollViewer VerticalScrollBarVisibility="Visible" Grid.Row="1"> 
     ...Content that scales here 
    </ScrollViewer> 
    <Grid Grid.Row="2"> 
     ...Static content here 
    </Grid> 
</Grid> 

이 잘 작동합니다 이상한 조금 보인다

+0

이드가 도움이되지 않습니다. 나는 StackPanel의 네이티브 WrapPanel과 스크롤바가 나타나지 않는 것을 시도했다. XAML에 많은 항목을 추가하더라도 (동적 인 것을 추가하는 것은 말할 필요도 없음). 컴파일 한 후 패널을 스크롤하려고 할 때 전체 패널이 올라가서 내용을 스크롤해야합니다 :/ – user1147467

+0

또한 'Width = "650"'및'Height = "300"'on 'ScrollViewer'와 안쪽 패널에는 없습니다. – herzmeister

3

좋아, 당신은이 시도가 - 그리드 작동 방식을 이해하는 데 도움이됩니다. 또한 주변을 움직이기 위해 여백을 사용하지 않고 대부분의 레이아웃이 가능하다는 점에 유의해야합니다. 디바이스 및 해상도의 성격 때문에 여백을 사용하여 레이아웃을 만드는 것은 나쁜 습관입니다. 귀하의 앱은 항상 확장 성이 뛰어납니다. 사람들이 저울질을 당하면 사람들이 피곤할 것입니다.

그리드는 자동 ("자동"), 절대 ("300") 및 채우기 ("*")

자동는 - 그리드 셀은 단지 내부의 내용에 맞게 확장이

절대 - 그리드 셀이 나머지를 채운다 - 그리드 셀이

기입 지정한 크기가 더 이상의 공간 R 자동으로 셀/절대가 "* 2"또한

또한 사용 상대 "채우기"speicify 수를 채우기 위해 설정된 다른 셀에 비례하여, 계산 된 "3 *"등

그래서 :

<Grid.RowDefinitions> 
    <RowDefinition Height="100" /> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="2*" /> 
    <RowDefinition Height="3*" /> 
</Grid.RowDefinitions> 

4 행의 첫 번째 행은 100 픽셀 높이 되 초래, 두 번째 행의 높이의 3 배 번째 행의 높이 인 4 로우 인 3 행. 마지막 세 행은 나머지 공간을 모두 채 웁니다.

또한 그리드 "*"는 부모 컨테이너 채우고 있음을 주목할 필요가 - 당신에 대해 DataGrid를 이야기하고있다

관련 문제