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

Неплохая идея разместить как стек, так и 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 собственности.

Смежные вопросы