locked
Как сделать TextBox (ChatBubbleTextBox из coding4fun) скроллируемым. RRS feed

  • Вопрос

  • Приветствую. Есть у меня некое абстрактное "чат" приложение. Там я использую ChatBubbleTextBox из coding4fun toolkita. Стандартное его поведения меня не совсем устраивает. Мне нужно:

    1. Чтобы он вмещал 5 строк

    2. Скроллировался внутри

    Методом научного тыка подобрал нужную высоту (170), чтобы влезало 5 строк, но вот сделать его скроллируемым так и не получилось. Обернул contenElement в ScrollViewer, но это не особо помогло, он просто стал откликаться на драг, но скролировать контент от этого не стал.

    <Border x:Name="EnabledBorder" 
        Grid.Row="1"
        Padding="{TemplateBinding Padding}"
        BorderThickness="{TemplateBinding BorderThickness}" 
        BorderBrush="{TemplateBinding BorderBrush}"
        Background="{TemplateBinding Background}">
        <Grid>
            <ContentControl
                x:Name="HintContentElement"
                BorderThickness="0" 
                Background="Transparent"
                Foreground="Gray"
                HorizontalContentAlignment="Stretch"
                VerticalContentAlignment="Stretch"
                Content="{TemplateBinding Hint}" />
                <ScrollViewer>
                    <ContentControl 
                        x:Name="ContentElement" 
                        Margin="1 2"
                        MaxHeight="170"
                        BorderThickness="0" 
                        Background="Transparent"
                        HorizontalContentAlignment="Stretch"
                        VerticalContentAlignment="Stretch" />
                </ScrollViewer>
        </Grid>
    </Border>

    Вот так данный контрол у меня размещен на странице

    <c4f:ChatBubbleTextBox 
        InputScope="Text" 
        TextChanged="ChatBubbleTextBox_TextChanged" 
        Text="{Binding CommentText, Mode=TwoWay}" 
        ChatBubbleDirection="LowerRight" 
        TextWrapping="Wrap" 
        AcceptsReturn="True"
        Style="{StaticResource themeAwareChatBubbleStyle}" />
    Как осуществить задуманное? Не путать со стандартными Сообщениями. Там сам контрол увеливичвается во время ввода. Я же ожидаю поведение, как у сообщений в приложении вконтакта (только там 3 строчки максимально)


    31 июля 2014 г. 14:39

Ответы

  • Посмотрел.

    Замените вот это:

      <ScrollViewer MaxHeight="170">
                                            <ContentControl 
    				            x:Name="ContentElement" 
                                                Margin="1 2"
                                                MaxHeight="170"
    					    BorderThickness="0" 
    				            Background="Transparent"
    									        HorizontalContentAlignment="Stretch"
    									        VerticalContentAlignment="Stretch" />
                                        </ScrollViewer>

    на это:

      <ScrollViewer 
    									        x:Name="ContentElement" 
                                                Margin="1 2"
                                                MaxHeight="170"
    									        BorderThickness="0" 
    									        Background="Transparent"
    									        HorizontalContentAlignment="Stretch"
    									        VerticalContentAlignment="Stretch" />

    Ужас, эта разметка вставки кода на форуме взрывает мне мозг.

    В общем, Вы обернули контент контрол скролл вьювером, так вот, просто замените контент контрол на скроллвьювер. 


    • Изменено Oleg Kurzov 11 августа 2014 г. 17:35
    • Помечено в качестве ответа Alexey Gurin 11 августа 2014 г. 19:13
    11 августа 2014 г. 17:34

Все ответы

  • Будет классно если Вы соберете простенький семпл.

    Из быстрых предположений - если скролл не скроллится, то у него нефиксированный размер. Т.е. он просто растягивается до бесконечности и всё.

    1 августа 2014 г. 7:37
  • К сожалению, изменение размера для скрол вьюера не помогло(

    Вот набросал простенький семпл

    http://1drv.ms/1tQZ0yI

    5 августа 2014 г. 7:35
  • Никак руки не дойдут посмотреть семпл. Проблема еще актуальна?
    11 августа 2014 г. 13:36
  • Посмотрел.

    Замените вот это:

      <ScrollViewer MaxHeight="170">
                                            <ContentControl 
    				            x:Name="ContentElement" 
                                                Margin="1 2"
                                                MaxHeight="170"
    					    BorderThickness="0" 
    				            Background="Transparent"
    									        HorizontalContentAlignment="Stretch"
    									        VerticalContentAlignment="Stretch" />
                                        </ScrollViewer>

    на это:

      <ScrollViewer 
    									        x:Name="ContentElement" 
                                                Margin="1 2"
                                                MaxHeight="170"
    									        BorderThickness="0" 
    									        Background="Transparent"
    									        HorizontalContentAlignment="Stretch"
    									        VerticalContentAlignment="Stretch" />

    Ужас, эта разметка вставки кода на форуме взрывает мне мозг.

    В общем, Вы обернули контент контрол скролл вьювером, так вот, просто замените контент контрол на скроллвьювер. 


    • Изменено Oleg Kurzov 11 августа 2014 г. 17:35
    • Помечено в качестве ответа Alexey Gurin 11 августа 2014 г. 19:13
    11 августа 2014 г. 17:34
  • Да, то что надо! Спасибо огромное! Разгадка была близка..
    11 августа 2014 г. 19:14