Итак, у меня есть селектор длинного списка с текстовыми полями внутри. Пользователь может взаимодействовать с этими текстовыми полями и вставлять больше текста. Когда текст вставлен, текстовое поле расширяется, и пользователь может продолжить писать и получить обзор.
Но когда пользователь доходит до конца селектора длинного списка и начинает писать в последнем текстовом поле, текстовое поле расширяется за пределы селектора длинного списка. Это означает, что пользователь должен прекратить писать и прокрутить селектор длинного списка вниз, а затем продолжить запись.
Итак, проблема в том, что когда текстовое поле находится внизу селектора длинного списка, а текст расширяется за пределы поля зрения, селектор длинного списка не прокручивается вниз.
Это мой код xaml для селектора длинного списка
<Grid x:Name="ContentPanel" Margin="12,49,12,0" Grid.RowSpan="2">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<phone:LongListSelector x:Name="ChatList" Grid.Row="0" HorizontalAlignment="Left" Width="456" Padding="0" >
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<local:ChatRoomTemplateSelector Content="{Binding}">
<local:ChatRoomTemplateSelector.YourSelf>
<DataTemplate x:Name="YourSelf">
<StackPanel>
<Grid x:Name="YourSelfGrid">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<UserControl Grid.Row="0">
<Path Data="Data" Fill="LawnGreen" StrokeThickness="0" Stretch="Fill" UseLayoutRounding="True"/>
</UserControl>
<TextBox Background="LawnGreen" Text="{Binding Path=Post, Mode=TwoWay,UpdateSourceTrigger=Explicit}" IsReadOnly="{Binding readOnly}" FontSize="20" Margin="39,10" TextWrapping="Wrap" BorderBrush="LawnGreen" Style="{StaticResource TextBoxStyleYourself}" TextChanged="OnTextBoxTextChanged"/>
</Grid>
<StackPanel Orientation="Horizontal">
<Path Data="Data" Fill="LawnGreen" StrokeThickness="0" Stretch="Fill" UseLayoutRounding="True" Margin="50,-1,0,0"/>
<TextBlock Text="{Binding Name}" FontWeight="Bold" FontSize="25" TextWrapping="Wrap"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</local:ChatRoomTemplateSelector.YourSelf>
</local:ChatRoomTemplateSelector>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
</Grid>
</Grid>
И я добавляю контент в селектор длинного списка с помощью этого фрагмента кода
source.Add(new Data() { Name = ChatRoomOverview.userName, User = "YourSelf", readOnly = false, Post = "" });
ChatList.ItemsSource = source;
Изменить
Я знаю, как прокрутить до последнего элемента при запуске, и LLS работает нормально. Но когда пользователь в последнем вставленном элементе вводит много текста, так что текстовое поле расширяется за пределы представления, я не могу заставить LLS сохранять элемент в поле зрения. Как мне это сделать?