2017-11-19 5 views
2

4 개의 그리드 A, B, C & D로 분할 된 그리드가 있습니다. 두 개의 그리드 A와 B에 대해서만 수평 스크롤 뷰어를 활성화해야합니다. 그러나 수직 스크롤 뷰어를 활성화해야합니다 2 그리드 B & D. 그리드 B는 첫 번째 가로 스크롤 뷰어와 두 번째 세로 스크롤 뷰어에 모두 포함될 수 있습니까? 미리 감사드립니다.두 스크롤 뷰어에 항목 포함

enter image description here

편집 : 아래 이미지에 도시 된 바와 같이 윈도우가 항상 윈도우의 왼쪽 상단에 위치하게 극대화 : 여기

enter image description here

것은 내가 확인하는 추가 코드입니다 최대화 된 윈도우는 좌측 상부 영역으로부터 떨어져 위치된다. 그러나이 문제에 관해서는 아무 것도 변하지 않습니다!

private void Window_StateChanged(object sender, EventArgs e) 
    { 
     if (this.WindowState == WindowState.Maximized) 
     { 
     // Left = System.Windows.SystemParameters.WorkArea.Width - Width; 
      Left = 200; 
     // Top = System.Windows.SystemParameters.WorkArea.Height - Height; 
      Top = 200;   
     } 
    } 

최대화 모드에서 창 중앙을 유지하기위한 힌트가 있습니까? 미리 감사드립니다.

+0

뒤에 당신은 당신의 질문을 명확히하고 우리에게 당신이 내가 당신이 원하는 것을 이해하기 힘든 시간을 보내고있어, 작동하지 않는 시도했습니다 코드를 줄 수 . UniformGrid는 통일 된 셀 크기를 가진 그리드입니다. UniformGrid에있는 행과 열의 개수를 지정하지 않으면 2x2라고 가정하지만 누가 알 수 있습니다. 각 셀은 개별 셀이며 셀/셀의 항목을 함께 공유하지 않습니다. 즉, 셀 A 내부의 ScrollViewer는 셀 C 내부에서 자체를 확장 할 수 없습니다. UniformGrid는 사용자가 쳐다 보지 않는 것이지만 어쩔 수 없습니다. 충분한 정보. –

+0

고맙습니다. 그리드가 통일 된 그리드가 아니라서 미안해. 그것은 4 개의 작은 그리드로 나뉘어 진 정상적인 그리드입니다. 1 개의 다른 그리드가있는 가로 스크롤 뷰어에 포함될 1 개의 보조 그리드가 필요하며 다른 그리드가있는 세로 스크롤 뷰어에 포함되어야합니다. 이것이 달성 될 수 있습니까? 다시 한번 감사드립니다. –

+0

추가 된 그림을보고 난 후에, 나는 아직도 당신이 달성하기를 원하는 것에 혼란스러워합니다. 수평'ScrollViewer'는 A와 B를 동시에 움직이게할까요, 아니면 A와 B가 그들 자신의 분리 된'ScrollViewer'를 가질 필요가 있습니까? B와 D도 똑같은 일을합니다. 같은 ScrollViewer를 공유하고 있나요? 아니면 자신의 ScrollViewer를 가지고 있습니까? 각 셀에는 무엇이 표시됩니까? 어쩌면 그것이 당신이 찾고있는 것을 이해하는 데 도움이 될 것입니다. –

답변

1

저는 UniformGrid에 관심이 없다고 가정하고 있지만, 수평 ScrollViewer 내부에 수직 ScrollViewer를 갖는 방법을 찾고 있습니다.

가이 코드를 2 × 2 그리드 준다 : AB CD

첨가 첫 번째 요소가 A와 C 모두의 내부에 걸쳐 수평의 ScrollViewer이다를,이 요소를 둘로 분할되고, 하부 수직의 ScrollViewer을 갖는다 . B와 D의 요소는 단순 요소입니다.

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 

    <ScrollViewer Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"> 
     <Grid> 
      <Grid.RowDefinitions> 
       <RowDefinition/> 
       <RowDefinition/> 
      </Grid.RowDefinitions> 

      <Image Grid.Row="0" Source="http://via.placeholder.com/1000x1000"/> 
      <ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto"> 
       <Image Source="http://via.placeholder.com/1000x1000"/> 
      </ScrollViewer> 
     </Grid> 
    </ScrollViewer> 

    <Image Grid.Column="1" Grid.Row="0" Source="http://via.placeholder.com/1000x1000"/> 
    <Image Grid.Column="1" Grid.Row="1" Source="http://via.placeholder.com/1000x1000"/> 
</Grid> 

편집

다음은 편집의 요구 사항에 맞게 새로운 코드입니다.

XAML

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 

    <ScrollViewer x:Name="A" Grid.Column="0" Grid.Row="0" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled" ScrollChanged="A_ScrollChanged"> 
     <Image Stretch="None" Source="http://lorempixel.com/1000/1000/"/> 
    </ScrollViewer> 
    <ScrollViewer x:Name="B" Grid.Column="0" Grid.Row="1" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" ScrollChanged="B_ScrollChanged"> 
     <Image Stretch="None" Source="http://lorempixel.com/1000/1000/"/> 
    </ScrollViewer> 

    <ScrollViewer x:Name="C" Grid.Column="1" Grid.Row="0" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Visible"> 
     <Image Stretch="None" Source="http://lorempixel.com/1000/1000/"/> 
    </ScrollViewer> 
    <ScrollViewer x:Name="D" Grid.Column="1" Grid.Row="1" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Visible" ScrollChanged="D_ScrollChanged"> 
     <Image Stretch="None" Source="http://lorempixel.com/1000/1000/"/> 
    </ScrollViewer> 
</Grid> 

코드

private void A_ScrollChanged(object sender, ScrollChangedEventArgs e) 
    { 
     B.ScrollToHorizontalOffset(e.HorizontalOffset); 
    } 

    private void B_ScrollChanged(object sender, ScrollChangedEventArgs e) 
    { 
     A.ScrollToHorizontalOffset(e.HorizontalOffset); 
     D.ScrollToVerticalOffset(e.VerticalOffset); 
    } 

    private void D_ScrollChanged(object sender, ScrollChangedEventArgs e) 
    { 
     B.ScrollToVerticalOffset(e.VerticalOffset); 
    } 
+0

대단히 감사합니다. 당신의 코드는 도움이되지만, 만약 당신이 수직 scrollviewer 안에 아이템을 추가해야한다면, 나는 그것이 수평 scrollviewer에 포함되기를 원하지 않습니까? 내가 더 명확 할 수 있도록 내 뜻을 사진으로 게시하려고합니다. 다시 한번 감사드립니다. –

+0

방금 ​​질문에 사진을 게시했습니다. 한번 봐주세요. –

+0

대단히 감사합니다. 귀하의 코드를 시도했지만 구현에 문제가있는 것 같습니다. 모르겠습니다! 스크롤 뷰어는 이제 활성화되었지만 비활성 상태입니다 (그리드에 더 많은 요소를 동적으로 추가하여 스크롤하지 마십시오). 질문에 XML을 게시합니다. 나는 너의 도움에 대해 대단히 감사한다. –