0

WinRT でのタッチ サポートに苦労しています。

TextBlock を含む Frame を持つ Canvas があります。TextBlock にはさまざまな量のテキストを含めることができ、Frame を Canvas の下部より下に拡張することができます。その場合、ユーザーがフレームに触れて上に移動できるようにして、テキストを読み終えることができるようにしたいと考えています。フレームを完全に上に移動すると、フレームの下部がキャンバスの下部から設定されたマージンになったときに停止するはずです。下に戻す場合も同様です。Inertia 機能を使用することも推奨されます。

誰かが方向性を提供できるなら、私はそれを感謝します。

4

2 に答える 2

0

私はそれを考え出した...

<Canvas x:Name="MainCanvas" ManipulationMode="TranslateRailsX" IsRightTapEnabled="False" IsDoubleTapEnabled="False" Margin="50,50,716,0" Width="600" ManipulationDelta="MainFrame_ManipulationDelta_1">
    <Canvas.RenderTransform>
        <CompositeTransform x:Name="ScrollMain"></CompositeTransform>
    </Canvas.RenderTransform>
    <Frame x:Name="MainFrame" Background="Beige" Height="auto" Width="600">
        <RichTextBlock x:Name="MainContent" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="18" FontFamily="Segoe Script" Width="540" HorizontalAlignment="Left" Margin="30,10,0,10" Foreground="Black" Height="auto" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" IsTapEnabled="False" ManipulationMode="None" IsTextSelectionEnabled="False"/>
    </Frame>
</Canvas>

MainCanvas.ManipulationMode = ManipulationModes.TranslateY | ManipulationModes.TranslateRailsY | ManipulationModes.TranslateInertia;

private void MainFrame_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
{
    CompositeTransform transform = ScrollMain as CompositeTransform;

    double yDelta = e.Delta.Translation.Y;
    double bDelta = (MainFrame.ActualHeight - pageRoot.ActualHeight + MainCanvas.Margin.Top + MainCanvas.Margin.Top) * -1;

    if (transform.TranslateY + yDelta > 0)
    {
        yDelta = transform.TranslateY * -1;
    }

    if (transform.TranslateY + yDelta < bDelta)
    {
        transform.TranslateY = bDelta;
    }
    else
    {
        transform.TranslateY += yDelta;
    }

    base.OnManipulationDelta(e);
}        
于 2013-03-24T17:03:18.927 に答える
0

テキストブロックの周りに ScrollViewer をラップして、ユーザーが画面をスクロールしてすべてのテキストを表示できるようにすることをお勧めします。

<ScrollViewer>
     <TextBlock Content="Very long content goes here" />
</ScrollViewer>

追加情報については、次のサイトをチェックしてください。

コントロールリストのスクロールビューアへのリンク

スクロールビューアのドキュメントへのリンク

于 2013-03-24T09:01:06.187 に答える