【问题标题】:Navigate to a Page of another Class Library导航到另一个类库的页面
【发布时间】:2020-09-24 12:37:51
【问题描述】:

我需要创建一个核心项目的多个版本。核心项目和它的扩展、一些功能,尤其是设计(字体、颜色等)之间几乎没有什么可以改变的。为此,我创建了一个Class Library。几天前我提出了一个问题,我猜想创建Class Library 是正确的方法。在这里,你有一个link 来发帖。

现在我在库中拥有所有项目,我正在创建这些扩展,我想导航到 Class Library 的页面,但从扩展中我得到了这个异常:

抛出异常:MyProject.exe 中的“System.AccessViolationException”

附加信息:试图读取或写入受保护的内存。 这通常表明其他内存已损坏。

类库包含UserControlsPages,但我不确定这是否是最好的方法。因此,任何建议或教程将不胜感激。

谢谢!

【问题讨论】:

  • 不,不要将您的视图(页面)放在类库中,将它们留在您的启动项目中。 UserControls 应该没问题
  • 在类库中拥有视图的想法是重用代码......所以,有没有办法在全局项目中拥有页面模板,然后将它们附加到扩展中?这正是我所需要的
  • 您需要启动时的视图,因为您需要使用Frame 成功导航(前进、后退、历史)。没有什么能阻止您在类库中创建 UserControls 中的所有布局,然后将它们添加到视图中
  • 将页面放入类库是一种组织应用程序部分的便捷方式。此外,它应该可以正常工作。您是否使用了正确的类库模板:Class Library (Windows Universal)(它应该在创建时询问您的目标 Windows 版本)?您是否在主项目中添加了该库作为参考?也许是其他原因导致您的异常,您应该发布更多代码。
  • 不知道。 :) 显示代码。异常的堆栈跟踪等。否则,我们都只是在疯狂猜测。

标签: c# win-universal-app uwp windows-10-universal


【解决方案1】:

幸运的是,Daniel Vaughan (http://danielvaughan.org/post/UWP-AccessViolationException-when-Navigating-to-a-Page-in-Another-Assembly.aspx) 提供了一种解决方法:

  • 在启动项目中创建一个 Dummy.xaml

【讨论】:

  • 这仅在调试版本中对我有用。在 Release 构建中,也会发生同样的问题。
【解决方案2】:

halllo 的回答仅在调试版本中对我有效。当我在 Release 构建中构建/部署时,问题仍然存在。相反,我只是删除导航代码并直接分配内容。到目前为止,我的应用运行良好(因为我不需要 Navigation,所以它是一个 WebView 应用)但我不知道会不会有任何问题。

// rootFrame.Navigate(typeof(MainPage), e.Arguments);
// Remove the above default line
// MainPage is a C# class that inherits a Page in my library
rootFrame.Content = new MainPage();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    相关资源
    最近更新 更多