在我的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中的行为一样?
答案 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
控件聚焦时,左摇杆可以是指针。