我正在處理包含註冊表單的應用程序。該表單包含多個文本輸入框,因此ScrollViewer可用於將它們全部顯示在一個頁面上。滾動查看器和SIP問題(WP7.5芒果)
以下是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是一個網格單元內,這意味着該標題面板應始終留在屏幕上)
滾動工作得很好,所以這不是問題。但是,當用戶選擇文本框輸入數據(即打開軟鍵盤)時,系統會推送整個頁面的內容(包括註冊標題面板),這不是預期的行爲。 [請參閱Windows Phone上的人員應用並嘗試添加新聯繫人。這包含了類似的結構,但ScrollViewer中僅在ScrollViewer中了]
測試用例
- 選擇一個文本框是靠近屏幕的上方顯示內容推送正確的行爲,開鍵盤。
- 嘗試在打開鍵盤的情況下滾動到頁面的底部。
- 頁面底部的項目無法訪問。
或
- 選擇一個文本框是靠近屏幕的底部可見。
- 整個頁面的內容被推高。
- 嘗試在打開鍵盤的情況下滾動到頁面的頂部。
- 頁面頂部的項目無法訪問,並且在鍵盤關閉之前,標題面板不會再回到視圖中。
任何幫助解決這個問題,將不勝感激。謝謝。
以下博客文章可能是解決此問題的好起點:http://sorokoletov.com/2011/08/windows-phone-70-handling-text-entry-screens/ –
@PaulDiston謝謝。我以前閱讀過這個博客。我曾嘗試演示應用程序,這不是我正在尋找的。過渡是非常突然的(即當SIP動畫結束時標題面板會重新出現),更不用說實施過於簡單了。我的預期實施方式是匹配您在Windows Phone 7中包含的用於管理聯繫人和地址的「People」應用程序中找到的聯繫人詳細信息表單。這並不是一個複雜的例子,人們可能會希望這個功能可以直接使用,不會覆蓋表單中的項目。 –
如果它可以幫助解決滾動問題,也試試這個。 http://www.luisleo.net/2012/06/24/how-to-use-listbox-properly-with-windows-phone-7/ –