2013-07-30 3 views
0

Я заполнил текст (я называю их как вопросы) из базы данных, но в моей панели обложки я могу отображать только 3 вопроса, остальные вопросы отсекаются, у меня больше 3 вопросы, как я могу сделать пейджинг в панели обертывания, чтобы отобразить остальную часть вопроса на самой панели? я заселить вопросы по цикл, как это:WPF C# Paging in Wrap Panel

for(int i= 0 ; i<lstQuestion.Count()-2; i++) 
     { 
      TextBlock tb = new TextBlock(); // Question 
      tb.FontSize = 19; 
      tb.FontWeight = FontWeights.Bold; 
      tb.Text = lstQuestion[i].QuestionContent; 
      tb.TextWrapping = TextWrapping.Wrap; 
      wrapPanel1.Children.Add(tb); 



      TextBox tbox = new TextBox(); 
      if (lstQuestion[i].Answer.Trim().Length > 0) // Textbox for user to input answer in every question 
      { 

       tbox.FontSize = 19; 
       tbox.Width = 250; 
       tbox.Height = 50; 
       tbox.PreviewDrop += new DragEventHandler(tbox_PreviewDrop); 
       tbox.Focusable = false; // Disallow user to input anything into it. 
       wrapPanel1.Children.Add(tbox); 
      } 

      answers.Add(lstQuestion[i].Answer); 

      if (lstQuestion[i].QuestionNo != lstQuestion[i + 1].QuestionNo) // add spacing between question 
      { 
       StackPanel sp = new StackPanel(); 
       sp.Width = 1010; 
       wrapPanel1.Children.Add(sp); 
       Label spacing = new Label(); 
       spacing.Width = 1010; 
       spacing.Content = ""; 
       wrapPanel1.Children.Add(spacing); 
      } 

     } // end of for each loop. 

И в моем XAML:

<Grid> 
    <WrapPanel HorizontalAlignment="Center" Name="wrapPanel1" VerticalAlignment="Center" Height="400" Width="1038" Margin="0,77,0,43" /> 
    <WrapPanel Height="80" HorizontalAlignment="Center" Name="wrapPanel2" VerticalAlignment="Top" Background="Aquamarine" Width="1000"> 
    </WrapPanel> 
    <Button Content="Check" Height="37" HorizontalAlignment="Center" Name="button1" VerticalAlignment="Bottom" Width="90" FontSize="24" Margin="474,0" Click="button1_Click" /> 

</Grid> 

Wrappanel1 где я кладу вопросы и текстовое поле (обертка панель 1 это панель, я хочу сделать пейджинг в), wrappanel2 - это еще одна панель, где есть варианты ответов.

enter image description here

Как видно из серой стрелки, есть еще текст, но он просто останавливается там в конце свитка.

ответ

1

Поместите свой wrapPanel1 внутри ScrollViewer.

<ScrollViewer VerticalAlignment="Center" HorizontalAlignment="Center" Height="400" Width="1038"> 
    <WrapPanel Name="wrapPanel1" /> 
</ScrollViewer> 

Попробуйте организовать свой интерфейс в XAML с RowDefinitions

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="80"></RowDefinition> 
     <RowDefinition Height="Auto"></RowDefinition> 
     <RowDefinition Height="40"></RowDefinition> 
    </Grid.RowDefinitions> 

    <WrapPanel Grid.Row="0" HorizontalAlignment="Center" Name="wrapPanel2" Background="Aquamarine" Width="1000"></WrapPanel> 

    <ScrollViewer Grid.Row="1" Height="400" Width="1038" CanContentScroll="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
     <WrapPanel Name="wrapPanel1"/> 
    </ScrollViewer> 

    <Button Grid.Row="2" Content="Check" Margin="5" HorizontalAlignment="Center" Name="button1" VerticalAlignment="Bottom" Width="90" FontSize="24" Click="button1_Click" /> 
</Grid> 
+0

привет спасибо за быстрый ответ, это полагая а ScrollViewer включить весь текст виден? Да, scrollviewer действительно работает, но не весь текст видится, только некоторые, но больше, чем раньше после использования scrollviewer. – user2376998

+0

Мне лично не нравится упорядочивать пользовательский интерфейс с использованием полей и статических высот и ширины. Поэтому попробуйте удалить Margin из ScrollViewer и посмотреть, работает ли он. – Nitesh

+0

Да, я удалил маржу, маржа по умолчанию задана всякий раз, когда я удаляю ее и запускаю ее снова, она снова появится – user2376998