0

내 응용 프로그램에 다른 페이지가 있고 각 페이지가 기본 응용 프로그램 페이지의 프레임으로로드됩니다.ScrollViewer에서 같은 페이지에 여러 개의 패널이 표시됨

지금 각 페이지에는 왼쪽 및 오른쪽으로 이름이 지정된 두 개의 StackPanels가 있습니다. 왼쪽 패널은 사이드 바의 역할을하고 모든 페이지를 스크롤해서는 안되므로 오른쪽 StackPanel 만 감쌀뿐 ... 오른쪽 부분이 잘 작동합니다. 그러나 나는이 작업을 수행 할 때 나는 전체 그리드를 감싸는 경우

<Grid> 
    <StackPanel Orientation="Vertical" Width="230"> 
     <Label Content="write message"/> 
     <RichTextBox Height="300" > 
      <FlowDocument/> 
     </RichTextBox> 
     <Label Content="Remaining Characters: 160" /> 
     <TextBox /> 
     <Button Content="SEND"/> 
    </StackPanel> 
    <ScrollViewer VerticalScrollBarVisibility="Auto" > 
     <StackPanel CanVerticallyScroll="True" Margin="230,0,0,40" Orientation="Vertical" MinHeight="600" ScrollViewer.CanContentScroll="True"/> 
    </ScrollViewer> 
</Grid> 

프로그램과 함께하지만, 사이드 바의 이동에 잘 작동 ... 왼쪽 패널이 응답하지 않고 심지어 텍스트 상자 같은 자식 컨트롤을 클릭 할 수없는 내 응용 프로그램을 실행 그것도.

답변

0

stackpanel과 scrollviewer를 같은 격자에 두는 것은 좋지 않습니다. ZIndex 속성이 없으므로 오른쪽 패널이 위쪽에 있고 왼쪽 패널이 마우스 이벤트에 응답하지 않는다고 생각합니다. 다른 열을 사용하십시오 :

<Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
     <StackPanel Orientation="Vertical" Width="230" Grid.Column="0"> 
      <Label Content="write message"/> 
      <RichTextBox Height="200" > 
       <FlowDocument/> 
      </RichTextBox> 
      <Label Content="Remaining Characters: 160" /> 
      <TextBox /> 
      <Button Content="SEND"/> 
     </StackPanel> 
     <ScrollViewer VerticalScrollBarVisibility="Auto" Grid.Column="1" > 
      <StackPanel CanVerticallyScroll="True" Margin="10,0,0,40" Orientation="Vertical" MinHeight="800" ScrollViewer.CanContentScroll="True"> 
       <Border Width="200" Height="600" Background="LightBlue"/> 
      </StackPanel> 
     </ScrollViewer> 
    </Grid> 

을 당신은 당신이 Z- 색인 속성을 변경하여 상단에 오는 요소를 제어 할 수 있습니다 캔버스를 사용해야하는 여러 열을 사용하지 않으려면.