3

グリッドに含まれるスタックパネルのコレクションに多数のコントロールがあります。グリッドはかなり長く、ページからはみ出しているので、スクロールビューアーに入れました。すべてが完璧に機能し、キーボードがアクティブになるまでページを上下にスクロールできます。それが起こると、テキストボックスが強調表示されているときに、コンテンツを一番下までスクロールできません。ある程度スクロールできますが、下までスクロールできません。私は何か間違ったことをしていますか?私のコードは次のとおりです。

<ScrollViewer Margin="12,0,12,0" Grid.Row="1">
        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Height="837" Width="456">                
            <StackPanel HorizontalAlignment="Left" Width="450" Margin="0,63,0,405">
                <TextBlock Height="30" Name="tBlk_Username" Text="Display Name" />
                <TextBox Height="71" Name="tb_UserNameVal" Text="{Binding UserNameValue, Mode=TwoWay}" Width="452" />
                <TextBlock Height="30" Name="tBlk_Email" Text="Email" />
                <TextBox Height="71" Name="tb_EmailVal" Text="{Binding EmailValue, Mode=TwoWay}" Width="452" />
                <TextBlock Height="30" Name="tBlk_Message" Text="Message" />
                <TextBox Height="130" Name="tb_MessageVal" Text="{Binding MessageValue, Mode=TwoWay}" Width="452" />
            </StackPanel>
            <StackPanel Height="37" HorizontalAlignment="Left" Margin="0,519,0,0" Name="stackPanel2"
                        VerticalAlignment="Top" Width="450">
                <TextBlock Height="30" Name="tBlk_PicInfo" Text="Include a Photo" />
            </StackPanel>
            <StackPanel Orientation="Horizontal" Height="90" HorizontalAlignment="Left" Margin="12,432,0,0"
                        Name="stackPanel1" VerticalAlignment="Top" Width="450" d:LayoutOverrides="GridBox">
                <TextBox Height="71" Name="tb_Location" Text="{Binding Location}" Width="367" IsReadOnly="True" />
                <Button Height="60" Name="btn_Clear" Width="60" BorderThickness="0" Background="{Binding LocationImage}" Style="{StaticResource LocationButtonStyle}">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Click">
                            <GalaSoft_MvvmLight_Command:EventToCommand x:Name="ClearCommand" Command="{Binding ClearCommand}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </Button>
            </StackPanel>
            <StackPanel Orientation="Horizontal" Height="205" HorizontalAlignment="Left" Margin="12,556,0,0"
                        Name="stackPanel3" VerticalAlignment="Top" Width="452" d:LayoutOverrides="GridBox">
                <Image Name="img_FlickrPic" Stretch="Fill" Width="260" Source="{Binding Capture}" Margin="0,13,0,0" />
                <Button Name="btn_Capture" Width="90" Height="90" Margin="0,67,0,55" BorderThickness="0">
                    <Button.Background>
                        <ImageBrush ImageSource="/Images/camera.png" />
                    </Button.Background>
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Click">
                            <GalaSoft_MvvmLight_Command:EventToCommand x:Name="CaptureClick" Command="{Binding CaptureCommand}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>                        
                </Button>
            </StackPanel>
            <StackPanel Orientation="Horizontal" Height="100" HorizontalAlignment="Left"
                        Margin="4,763,0,0" Name="stackPanel4" VerticalAlignment="Top" Width="450" d:LayoutOverrides="GridBox">
                <Button Content="Submit" Height="71" Name="btn_Submit" Width="130" IsEnabled="{Binding SubmitEnabled}">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Click">
                            <GalaSoft_MvvmLight_Command:EventToCommand x:Name="SubmitCommand" Command="{Binding SubmitCommand}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </Button>
            </StackPanel>
            <StackPanel Height="59" HorizontalAlignment="Left" Name="stackPanel5" VerticalAlignment="Top" Width="456" Orientation="Horizontal">
                <TextBlock FontFamily="{StaticResource HelveticaNeue}" Name="tBlk_StepConf" Text="Please share my " Width="150" TextAlignment="Center" Height="33" />
                <TextBlock FontFamily="{StaticResource HelveticaNeue}" Foreground="#FF00BCE4" Name="tBlk_StepConfCount" Text="{Binding StepVal}" Width="56" FontSize="34" TextAlignment="Center" VerticalAlignment="Top" />
                <TextBlock FontFamily="{StaticResource HelveticaNeue}" Name="tBlk_StepConfTrail" Text=" steps for water" Width="134" TextAlignment="Center" Height="40" />
            </StackPanel>
        </Grid>
    </ScrollViewer>
4

1 に答える 1

0

問題は、ScrollViewer がソフト入力パネル (またはキーボード) に注意を払わないため、いわばキーボードの後ろで可能な限りスクロールすることです。

簡単な解決策は、ScrollViewer のコンテンツ コントロールの下部にマージンを追加することです。

長くて複雑な解決策は、SIP が表示されるときにマージンを追加することです。残念ながらイベントはありませんが、テキストボックスがフォーカスを取得または失ったときにリッスンし、マージンを設定したり、テキストボックスにフォーカスがあるときにページの下部にコントロールを表示したりできると思います (したがって、SIP が表示されます)。そうでないときは非表示にします。

于 2012-09-09T14:28:41.140 に答える