2013-10-07 38 views
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> 

,如果你不希望使用你必須使用畫布,你可以控制哪些元素改變zIndex屬性來在上面多列。