2017-01-09 6 views
1

私のUWPのXboxアプリケーションでは、コンテンツがScrollViewerにあり、左スティックでコンテンツをスクロールできるようにしたいと考えています。スクロール領域を移動して要素をクリックするために使用できるように、このページでポインタカーソルを有効にしたいと思います。スティック/マウスポインタのスクロールが残っていますUWPのScrollViewerアプリ

これは基本的にページを下にスクロールするときにエッジブラウザが表示するのと同じ動作です...ポインタがコンテンツの端に来ると、スクロールが発生します。 、私はこのページにそれがある方法をロードする場合は、左スティックは私が任意の方向にScrollViewerのをスクロールすることができます

<Page 
x:Class="MyApp.MyPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

<Grid>  

    <ScrollViewer x:Name="RootScrollViewer" IsTabStop="True" ZoomMode="Enabled" HorizontalScrollMode="Enabled" HorizontalScrollBarVisibility="Visible" VerticalScrollMode="Enabled" VerticalScrollBarVisibility="Visible" > 
     <Grid x:Name="TheGrid" Width="1400" Height="1400" Margin="{StaticResource DefaultAllMargin}"> 
      <Rectangle Width="315" Height="200" VerticalAlignment="Top" HorizontalAlignment="Left" Fill="Green"/> 
      <Rectangle Width="315" Height="200" VerticalAlignment="Bottom" HorizontalAlignment="Left" Fill="Blue"/> 
      <Rectangle Width="315" Height="200" VerticalAlignment="Center" HorizontalAlignment="Center" Fill="Blue"/> 
      <Rectangle Width="315" Height="200" VerticalAlignment="Bottom" HorizontalAlignment="Right" Fill="Blue"/> 
      <Rectangle Width="315" Height="200" VerticalAlignment="Top" HorizontalAlignment="Right" Fill="Blue"/> 
     </Grid> 
    </ScrollViewer> 

</Grid> 

私はこのようになりますサンプル・ページを持っていますそれは私が望むものに近いです。しかし、ポインタを有効にするために私のページコンストラクタに以下のコードを追加すると、ポインタが取得されますが、左スティックはページ内でポインタを移動しますが、ScrollViewerはスクロールしません。

this.RequiresPointer = RequiresPointer.WhenFocused; 

どのように私はポインタとスクロールを達成することができますか?

更新:私はScrollViewerとWebViewを使っていくつかのテストアプリケーションを作成し、マウスの動作を比較しました。すぐに使えるWebViewの動作は、私が望むのとまったく同じです。私は左のスティックがスクロールを制御するためにポインタと右のスティックを制御したい。だから私の質問はこれです:ScrollViewer内のネイティブXAMLコンテンツをWebコンテンツ内のWebViewと同じように動作させる方法はありますか?

答えて

1

私は、このページにそれがある方法をロードする場合は、左スティックは、私は両方のXAMLについて

を望むものに近い任意の方向に ScrollViewerのをスクロールすることを可能にし、WebアプリケーションをホストされていますXbox Oneで動作している場合、マウスモードはアプリ全体でデフォルトでオンになっています。アプリクラスでフォローコードを追加することにより、マウスモードを無効にするまで左スティックは、あなたがスクロールできるようにするべきではない:マウスモードの下で、左スティックは、フリーモード用である場合、右スティックがためのものですので、これはある

public App() 
{ 
    this.InitializeComponent(); 
    this.Suspending += OnSuspending; 
    this.RequiresPointerMode = Windows.UI.Xaml.ApplicationRequiresPointerMode.WhenRequested; 
} 

スクロールするとthis pictureが表示されます。これは変更できないように設計されています。詳細については、Mouse mode sectionのDesigning for Xbox and TVの記事を参照してください。

あなたの説明によれば、マウスモードはすでに無効になっており、コントロールまたはページが呼び出されたときにのみ有効になります。したがって、左のスティックは、ページがポイントを要求する前にスクロールすることができます。

どのように私はポインタとスクロールを達成することができますか?

あなたの必要条件を満たすために、左スティックは、上記のように設計されたフリーモードの下でマウスモードにすることはできません。マウスモードのときは、ポインタに左スティックを使用し、スクロールには右スティックを使用することができます。左スティックのみを使用したい場合は、すでに行ったようにアプリ全体のマウスモードを無効にしてから、WebViewコントロールのように、ポインタをページ全体に挿入しないコントロールにはwhenfocusedへのポインタが必要です。ページは左スティックでスクロールすることができ、コントロールがフォーカスされているときは左スティックをポインターにすることができます。

+0

私の場合、ScrollViewerのRootScrollViewer.RequiresPointer = RequiresPointer.WhenFocusedを設定すると、ポインタが取得されません。ページの読み込み時に.Focus(...)をScrollViewerで呼び出そうとしましたが、まだScrollViewerにポインタがありません。 .RequiresPointer = RequiresPointer.WhenFocusedをページに設定すると、ポインタが取得されますが、スクロールビューアはスティックでスクロールしません。ロード時にScrollViewerで.Focus()を呼び出すかどうかを指定します – Scott

関連する問題