我有一种情况,当应用程序处于全屏模式时,从屏幕外发出的操作事件(想象表面专业版的边框)没有被注册。但是,当应用程序最大化时,它们会按预期注册" (我把它放在引号中,因为我知道它不再是正式的"最大化的事情)。
要重现,请创建空白应用程序并在此帖子末尾添加代码。
从上到下滑动,并注意到没有任何操纵事件被触发。现在单击退出全屏按钮,然后单击最大化按钮并重复实验,您将看到操作事件现在正确触发。
开始在屏幕外拖动非常重要。
这是设计的吗?有没有我不知道的问题?这是一个错误吗?
以下Xaml文件:
<Page
x:Class="EdgeSwipeDetect.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:EdgeSwipeDetect"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Green"
ManipulationMode="TranslateInertia,TranslateY"
ManipulationStarted="Grid_ManipulationStarted"
ManipulationCompleted="Grid_ManipulationCompleted"
ManipulationDelta="Grid_ManipulationDelta" />
</Page>
代码背后:
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
CoreApplicationViewTitleBar coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
coreTitleBar.ExtendViewIntoTitleBar = true;
var appView = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();
appView.TryEnterFullScreenMode();
}
private void Grid_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
Debug.WriteLine("ManipulationStarted");
}
private void Grid_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
Debug.WriteLine("ManipulationCompleted");
}
private void Grid_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
Debug.WriteLine("ManipulationDelta");
}
}