为什么MainPage()更改为NavigationPage()时事件不起作用



我有一个小的移动应用程序,它使用XZing.Net扫描二维码,效果很好。现在我需要在同一页上显示结果,而不是在另一页上。

现在我必须更改我的代码才能在页面中导航。

应用程序.xaml.cs

来自:

public App()
{
InitializeComponent();
MainPage = new MainPage();
}

收件人:

public App()
{
InitializeComponent();
MainPage = new NavigationPage(new MainPage());
}

主页.xaml.cs

来自:

public void Handle_OnScanResult(Result result)
{
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert("Scanned result", result.Text, "OK");
});
}

收件人:

public void Handle_OnScanResult(Result result)
{
Device.BeginInvokeOnMainThread(async () =>
{
await Navigation.PushAsync(new ScannedResult());  
});
}

和我的ScanneResult.xaml.cs

public ScannedResult()
{
InitializeComponent();
}
public void LoadResult(string result)
{
LblScannedResult.Text = "rverfcwefcdfcfvcerfgcfcdfcsf";
}

我注意到,通过将MainPage = new MainPage();更改为MainPage = new NavigationPage(new MainPage());扫描仪坏了。

以下是处理扫描成功时的方法:

public void Handle_OnScanResult(Result result)
{
Device.BeginInvokeOnMainThread(async () =>
{
//await Navigation.PushAsync(new ScannedResult()); // it should navigate to another page when the scan is successful.
await DisplayAlert("Scanned result", result.Text, "OK");
});
}

有什么建议吗?PS:如何将结果传递到另一个页面?

导航到ScanneResult页面时传递结果:

public void Handle_OnScanResult(Result result)
{
Device.BeginInvokeOnMainThread(async () =>
{
await Navigation.PushAsync(new ScannedResult(result));
});
}

在ScanneResult页面中,使用参数result创建一个新的构造方法。然后您可以获得扫描结果并在ScanneResult页面中使用:

public partial class ScannedResult : ContentPage
{
public ScannedResult()
{
InitializeComponent();
}
public ScannedResult(string result)
{
InitializeComponent();
var scanResult = result;
LblScannedResult.Text = result;
}
}

相关内容

  • 没有找到相关文章

最新更新