在UWP Xbox应用程序中留下棒/鼠标指针滚动ScrollViewer

时间:2017-01-09 16:29:35

标签: uwp uwp-xaml xbox

在我的UWP Xbox应用程序中,我希望有一个页面,其中内容位于ScrollViewer中,并允许用户使用左手杆向任何方向滚动内容。我想为此页面启用指针游标,以便它可以用于在滚动区域和单击元素周围移动。

这与您在向下滚动页面时Edge浏览器显示的行为基本相同...当指针到达内容的边缘时,滚动就会发生。

我有一个如下所示的示例页面:

DATE_ADD(CURDATE(), INTERVAL 1 DAY)

如果我按照原来的方式加载这个页面,那么左键允许我向任何方向滚动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和WebView创建了一些测试应用程序来比较鼠标的行为方式。开箱即用的WebView的行为与我想要的完全一样。我希望左手杆控制指针,右手杆控制滚动。所以我的问题是:有没有办法让ScrollViewer中的原生XAML内容像Web内容在WebView中的行为一样?

1 个答案:

答案 0 :(得分:1)

  

如果我按照原来的方式加载这个页面,那么左摇杆就可以滚动了   ScrollViewer在任何方向,都接近我想要的

对于在Xbox One上运行的XAML和托管Web应用程序,默认情况下会为整个应用程序启用鼠标模式。在您通过在App类中添加以下代码来禁用鼠标模式之前,左侧操纵杆不允许您滚动:

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

这是因为在鼠标模式下,左手杆为自由模式,右手杆用于滚动this picture显示。这是设计我们无法改变。详情请参阅Designing for Xbox和TV文章的Mouse mode section

根据您的描述,您已经禁用鼠标模式,并且只有当控件或页面调用它时,才会启用它。所以左手杆可以在页面需要点之前滚动。

  

任何人都知道如何完成指针和滚动?

根据您的要求,左手杆不能在鼠标模式下以及在上述设计的自由模式下。在鼠标模式下,您可以使用左手杆作为指针,同时右手杆用于滚动。如果您只想使用左手杆,请按照您已经完成的方式为整个应用程序禁用鼠标模式,然后尝试仅需要指向whenfocused的指针,以指向内部不是整个页面的控件,例如{{1} 3}}控制。然后页面可以通过左摇杆滚动,当WebView控件聚焦时,左摇杆可以是指针。