【发布时间】:2016-07-21 14:40:50
【问题描述】:
我已经开始使用 Template10 并尝试在应用程序中放置一个 ZXing 条码扫描器。但我在 ZXing 和 Template10 的协同工作方式上遇到了一些问题。
当我启动 ZXing 扫描仪时,它似乎会用自己的布局覆盖所有当前帧和内容。因此,当我启动取消操作时,没有什么可回头了。
框架始终位于启动它的页面上,因此 Template10 无法理解正在发生的任何事情。
我的代码:
public async Task ScanQR()
{
try
{
var scanner = new ZXing.Mobile.MobileBarcodeScanner();
var _overlay = new Views.Scanner();
_overlay._cancel.Click += (object sender, RoutedEventArgs e) => { scanner.Cancel(); };
_overlay._torch.Click += (object sender, RoutedEventArgs e) => { scanner.ToggleTorch(); };
scanner.CustomOverlay = _overlay;
scanner.UseCustomOverlay = true;
var result = await scanner.Scan();
if (result != null)
{
// Handle Result
}
}
}
正如您在快照 (1)(2) 中看到的那样,应用程序上的堆叠面板被覆盖。如您所见,它替换了 [Frame]->[ContentPresenter] 和内部的那些。
取消后如何让代码返回上一页?我知道我可能需要以某种方式封装它,但我找不到任何关于它的信息。一直在寻找有类似问题的人。所以我转向你们。
(1)。 Before ZXing.Scan()
(2)。 After ZXing.Scan()
--- 添加信息---
在不使用 Template10 的普通应用程序上解决此问题的方法是使用以下代码处理返回请求。这是我在某个论坛上找到的东西,现在不记得出处了。
如果此代码不存在,则当您按下手机上的硬件后退按钮时,应用程序将关闭。当我在手机上尝试 Template10 项目时,它会做同样的事情。在 PC 上,您没有返回按钮。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
var currentView = SystemNavigationManager.GetForCurrentView();
if (!ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
currentView.AppViewBackButtonVisibility = this.Frame.CanGoBack ?
AppViewBackButtonVisibility.Visible : AppViewBackButtonVisibility.Collapsed;
}
currentView.BackRequested += SystemNavigationManager_BackRequested;
}
private void SystemNavigationManager_BackRequested(object sender, BackRequestedEventArgs e)
{
if (this.Frame.CanGoBack)
{
this.Frame.GoBack();
e.Handled = true;
}
}
【问题讨论】:
标签: uwp zxing template10