Пейджинг WPF C # в панели переноса

Я заполнил некоторый текст (я называю их вопросами) из базы данных, но на моей панели обертки я могу отобразить только 3 вопроса, остальные вопросы отключены, у меня более 3 вопросов, как я могу выполнить разбиение на страницы обернуть панель для отображения остальной части вопроса на самой панели? Я заполняю вопросы циклом for следующим образом:

 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 - это еще одна панель, где есть варианты ответов.

введите описание изображения здесь

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


person user2376998    schedule 30.07.2013    source источник


Ответы (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>
person Nitesh    schedule 30.07.2013
comment
привет, спасибо за быстрый ответ, позволяет ли установка средства просмотра прокрутки видеть весь текст? Да, scrollviewer работает, но не весь текст виден, только некоторые, но больше, чем раньше, после использования scrollviewer - person user2376998; 30.07.2013
comment
Мне лично не нравится упорядочивать пользовательский интерфейс с использованием полей и статической высоты и ширины. Так что попробуйте удалить Margin из ScrollViewer и посмотрите, работает ли он. - person Nitesh; 30.07.2013
comment
да, я удалил маржу, маржу, установленную по умолчанию, всякий раз, когда я удаляю ее и запускаю снова, она появится снова - person user2376998; 30.07.2013
comment
Это ? Попробуйте удалить его с панели свойств. - person Nitesh; 30.07.2013
comment
да в свойствах его 0 - person user2376998; 30.07.2013
comment
Интересно !! все еще вы видите Margin = 0,77,0,43 в XAML? - person Nitesh; 30.07.2013
comment
нет, я не знаю, когда он будет появляться снова иногда после того, как я бегу, но обычно он появляется снова, но пока я не касаюсь его, он остается таким, каким я хотел, когда я удаляю Margin и устанавливаю его на 0, это не так изменить что-нибудь, я думаю, это по умолчанию - person user2376998; 30.07.2013
comment
Если перетащить его в дизайнер, он обязательно будет восстановлен. - person Nitesh; 30.07.2013
comment
ic ... так есть идеи, почему мой текст все еще обрезается? это связано с размером шрифта моего текста? или статическая высота и ширина - person user2376998; 30.07.2013
comment
Смотрите мой обновленный ответ. Вот как вы можете размещать элементы управления в сетке. - person Nitesh; 30.07.2013
comment
эй, спасибо за обновление, все еще не работает, я пробовал использовать сетку раньше, меняя меньший шрифт, устанавливая высоту и ширину на авто, не помогает - person user2376998; 30.07.2013
comment
Можете выложить скриншот, чтобы описать это подробнее? - person Nitesh; 30.07.2013
comment
После проверки снимка экрана я понял, что ScrollViewer должен быть во второй строке, поэтому исправил это в ответе. Также старайтесь избегать установки ширины в коде за содержимым. - person Nitesh; 30.07.2013
comment
я полагаю, scrollviewer не может быть строкой? мой scrollviewer становится вертикальным - person user2376998; 30.07.2013
comment
Я имел в виду, что ScrollViewer должен быть помещен во вторую строку родительской сетки, как я вижу на скриншоте. Что вы имеете в виду под словом «становится вертикальным»? - person Nitesh; 30.07.2013
comment
средство просмотра прокрутки теперь находится в нижней части панели обтекания, расположенной вертикально - person user2376998; 30.07.2013