Я работаю над приложением, которое включает регистрационную форму. Форма содержит несколько текстовых полей ввода, поэтому ScrollViewer используется для того, чтобы все они отображались на одной странице.Scrollviewer & SIP Issue (WP7.5 Mango)
является разобранным примером кода 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 вверх]
Test Cases
- Выберите TextBox, который виден в верхней части экрана, чтобы открыть клавиатура.
- Попытка прокрутки в нижней части страницы с открытой клавиатурой.
- Элементы в нижней части страницы недоступны.
или
- Выберите TextBox, который виден в нижней части экрана.
- Содержимое всей страницы подталкивается вверх.
- Попытка прокрутки вверху страницы с открытой клавиатурой.
- Элементы в верхней части страницы недоступны, и панель заголовка никогда не возвращается в поле зрения, пока клавиатура не будет закрыта.
Любая помощь по решению этой проблемы будет оценена по достоинству. Благодарю.
Следующее сообщение в блоге может быть хорошей отправной точкой для решения этой проблемы: http://sorokoletov.com/2011/08/windows-phone-70-handling-text-entry-screens/ –
@PaulDiston Спасибо. Я читал этот блог раньше. Я попробовал демонстрационное приложение, и это не то, что я ищу. Переход очень крут (т. Е. Панель заголовка снова появляется, когда заканчивается анимация SIP), не говоря уже о том, что реализация чрезмерна для чего-то такого простого. Моя предполагаемая реализация соответствует сопоставлению форм контактных данных, которые вы найдете в приложении «Люди», которое включено в Windows Phone 7 для управления контактами и адресами. Это не сложный пример, и можно было бы ожидать, что это будет работать из коробки, а не покрывать элементы в форме. –
Попробуйте это, если это может помочь с проблемой прокрутки. http://www.luisleo.net/2012/06/24/how-to-use-listbox-properly-with-windows-phone-7/ –