Я работаю над приложением, которое включает регистрационную форму. Форма содержит несколько текстовых полей ввода, поэтому ScrollViewer используется для того, чтобы все они отображались на одной странице.
Ниже приведен урезанный пример кода XAML, который я использую:
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="SCROLLVIEWER TEST" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="registration" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<ScrollViewer Grid.Row="1">
<StackPanel>
<TextBlock Text="Hello" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello1" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello2" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello3" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello4" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello5" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello6" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello7" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello8" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="END" Margin="12,0,0,0"/>
<TextBox />
</StackPanel>
</ScrollViewer>
</Grid>
(Обратите внимание, что ScrollViewer находится внутри ячейки сетки, что означает, что панель заголовка должна оставаться OnScreen в любое время)
Прокрутка работает отлично, так что это не проблема. Однако, когда пользователь выбирает TextBox для ввода данных (т.е. Открывается мягкая клавиатура), система подталкивает содержимое всей страницы вокруг (включая панель заголовка регистрации), что не является ожидаемым поведением. [См. Приложение "Люди" на Windows Phone и попробуйте добавить новый контакт. Это содержит аналогичную структуру, но ScrollViewer ведет себя правильно, только нажав содержимое в scrollviewer вверх]
Тест-тесты
- Выберите текстовый блок, который отображается в верхней части экрана, чтобы открыть клавиатуру.
- Попытка прокрутки в нижней части страницы с открытой клавиатурой.
- Элементы внизу страницы недоступны.
или
- Выберите текстовый блок, который будет виден в нижней части экрана.
- Содержимое всей страницы задвинуто.
- Попытка прокрутки вверху страницы с открытой клавиатурой.
- Элементы в верхней части страницы недоступны, и панель заголовка никогда не возвращается в поле зрения, пока клавиатура не будет закрыта.
Любая помощь в решении этой проблемы будет оценена по достоинству. Спасибо.