在UWP Xbox应用程序中使用左棒/鼠标指针滚动滚动查看器
在我的UWP Xbox应用程序中,我希望有一个页面,其中内容位于ScrollViewer中,并允许用户使用左棒向任何方向滚动内容。我想为这个页面启用指针光标,这样它就可以用来在滚动区域中移动并单击元素 这与边缘浏览器在向下滚动页面时表现出的行为基本相同……当指针指向内容的边缘时,就会出现滚动 我有一个示例页面,如下所示:在UWP Xbox应用程序中使用左棒/鼠标指针滚动滚动查看器,uwp,uwp-xaml,xbox,Uwp,Uwp Xaml,Xbox,在我的UWP Xbox应用程序中,我希望有一个页面,其中内容位于ScrollViewer中,并允许用户使用左棒向任何方向滚动内容。我想为这个页面启用指针光标,这样它就可以用来在滚动区域中移动并单击元素 这与边缘浏览器在向下滚动页面时表现出的行为基本相同……当指针指向内容的边缘时,就会出现滚动 我有一个示例页面,如下所示: <Page x:Class="MyApp.MyPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pres
<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内容像WebView中的web内容那样运行
如果我按原样加载此页面,左侧的控制杆允许我滚动页面
在任何方向滚动查看器,这是接近我想要的
对于Xbox One上运行的XAML和托管web应用程序,默认情况下整个应用程序都将启用鼠标模式。在通过在应用程序类中添加以下代码来禁用鼠标模式之前,左侧控制杆不应允许您滚动:
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
this.RequiresPointerMode = Windows.UI.Xaml.ApplicationRequiresPointerMode.WhenRequested;
}
这是因为在鼠标模式下,左键是自由模式,右键是滚动模式。这是我们无法改变的设计。详情请参考为Xbox和TV设计的文章
根据您的描述,您已经禁用了鼠标模式,只有当控件或页面调用鼠标模式时,才会启用鼠标模式。因此,左杆可以在页面需要点之前滚动
有人知道我如何完成指针和滚动吗
根据您的要求,左杆不能处于鼠标模式下,也不能处于上述设计的自由模式下。在鼠标模式下,您可以使用左棒作为指针,同时使用右棒进行滚动。如果您只想使用left stick,请对整个应用程序禁用鼠标模式,就像您已经做的那样,然后尝试仅对您希望指针位于内部的控件(而不是整个页面)要求指针指向
when focused
,例如,控件。然后页面可以通过左键滚动,当WebView
控件聚焦时,左键可以是指针。在我的情况下,如果我设置RootScrollViewer.requirePointer=requirePointer。当我的ScrollViewer聚焦时,我不会得到指针。我已尝试在页面加载时调用ScrollViewer上的.Focus(…),但仍然无法在ScrollViewer上获得指针。如果我在页面上设置.requirepointer=requirepointer.when焦点,那么我会得到指针,但滚动查看器不会在加载时滚动滚动滚动条….或不调用滚动查看器上的.Focus()
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
this.RequiresPointerMode = Windows.UI.Xaml.ApplicationRequiresPointerMode.WhenRequested;
}