4

設定>>モバイルネットワーク>>EditAPNのようなWindows Phoneでフォームの動作を取得するにはどうすればよいですか。このページでは、スクロールビューアに多くのテキスト ボックスがあります。ユーザーがテキストボックスをタップしてフォーカスを取得すると、ページが上にスクロールし、ヘッダーは一定のままで、SIP キーボードが表示されます。ユーザーがこのテキスト ボックスからフォーカスを失うと、ページは通常の状態になり、SIP キーボードは非表示になり、ヘッダーは変更されません。この動作を実現したい。私はたくさん検索しましたが、解決策はありませんでした。WP7 で scrollviewer の動作を見るのは奇妙です。どんな助けも素晴らしく、かなりの価値があります。前もって感謝します。注: トリッキーな解決策がある場合は、サンプル コードを提供してください。

これが私のサンプルコードです。

<Grid x:Name="ContentPanel" Grid.Row="1" >
            <ScrollViewer x:Name="Scroller">
                <StackPanel Orientation="Vertical">

                    <TextBlock Text="Name"/>
                    <TextBox x:Name="txtName" />
                    <TextBlock Text="Email"/>
                    <TextBox x:Name="txtEmail"/>
                    <TextBlock Text="Phone"/>
                    <TextBox x:Name="txtPhone" />
                    <TextBlock Text="Adress"/>
                    <TextBox x:Name="txtAddress" />                 

                </StackPanel>
            </ScrollViewer>
        </Grid>

下にスクロールしようとすると、完全に下に移動せず、弾性として機能しているようです。

編集:この例は、すでに見たもので、私の場合は役に立ちません。私には4つのテキストボックスがあり、最初のテキストボックスに焦点が当てられ、キーパッドが来て最後のテキストボックスを非表示にします。ユーザーが最後のテキストボックスに移動して入力を入力したい場合、完全にスクロールせず、エラスティックとして機能します。このユーザーは、画面の他の部分を押す必要があるため、最後のボックスに入力します。設定 -> モバイル ネットワーク -> EditAPN の WP7 アプリで見ました。4 ~ 5 個のテキスト ボックスがあり、これらは完全にスクロールします。MSFT が使用したコントロールまたは回避策がわからない。

4

1 に答える 1

1

私が間違っているかもしれませんが、単純なグリッドとリストピッカー コントロールを使用してみませんか。これには Windows Phone Toolkit が必要です (Nuget Here )。

グリッドの最初の行にはヘッダーが含まれており、変更されません。2番目の行には、必要なものが含まれています(scrollview、listpickerなど)

これは非常に基本的な例です:

<phone:PhoneApplicationPage 
    x:Class="PhoneApp3.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">
    <!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock x:Name="PageTitle" Text="MY HEADER" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>

        <Grid x:Name="ContentPanel" Grid.Row="1">
            <toolkit:ListPicker>
                <toolkit:ListPickerItem Content="aaa" />
                <toolkit:ListPickerItem Content="bbb" />
                <toolkit:ListPickerItem Content="ccc" />
            </toolkit:ListPicker>
        </Grid>
    </Grid>
</phone:PhoneApplicationPage>

編集 :

SIP キーボードがレンダリングされると、PhoneApplicationFrame.TranslateTransform.Y が特定の値 (横向きでは -259、縦向きでは -339) に設定されます。レイアウトを更新するには、トップ マージンを指定された値 (-s) に設定するだけで、その後、Silverlight レイアウト システムが問題を修正します。

このが役に立ちます。

于 2013-02-05T13:11:37.930 に答える