2016-07-27 69 views
1

我已经使用VS2015(使用更新3)创建了一个“空白应用程序(通用Windows)”。UWP:从DLL加载页面

然后,我添加了一个“类库(通用Windows)”项目到相同的解决方案,并将MainPage.xaml从“空白应用程序”项目移动到“类库”项目中的“视图”文件夹更改了XAML和CS中的名称空间以包含“视图”)。

最后,我从“空白应用程序”项目中引用了“类库”项目,为“视图”命名空间添加了一个“使用”到app.xaml.cs并试图运行“空白应用程序”项目。

它以System.AccessViolationException失败:“尝试读取或写入受保护的内存,这通常表示其他内存已损坏”。

“空白应用程序”项目和“类库”项目均针对目标版本为“10.0(10586)”且最低版本为“10.0(10240)”的通用Windows。这两个项目还引用了PRISM以及一个针对“.NET Framework 4.5”,“ASP.NET Core 1.0”,“Windows 8”,“Windows Phone 8.1”,“Windows Phone Silverlight 8”,“Xamarin”的“可移植类库” .Android“,”Xamarin.iOS“和”Xamarin.iOS(经典)“ - 与Prism.Core中列出的目标列表相同。

我想做一些不允许的事吗?我所需要的是能够将我的视图分解为基于功能组的独立DLL。

+0

您能告诉我们您如何浏览?使用棱镜? – Bart

+0

@Bart,尚未使用PRISM - 只是添加为参考,以便我可以开始使用它。只有更改启动才能将Views命名空间添加到app.xaml.cs,以便运行默认启动(rootFrame.Navigate(typeof(MainPage),e.Arguments);)代码。我后来删除了对PRISM的所有引用,问题依然存在。 –

回答

0

我能够复制这个问题。这很有趣,我正准备将所有的XAML页面移动到一个DLL中,以便我有一个干净的解决方案并构建不同的应用程序层,并在今天看到了这个问题。这对我提出了一个红旗,所以开始寻找文件和解决这个问题的方法。经过3个小时的研究,我想不是在网上搜索,而是自己找到一种方法,并从UWP解决方案中创建一个在我的MainPage上创建内容控件。

<Page 
    x:Class="App8.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:App8" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <ContentControl x:Name="MainControl" /> 
</Page> 

这是我的代码背后。

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 
     this.Loaded += MainPage_Loaded; 
    } 

    private void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     MainControl.Content = new ClassLibrary1.MainPage(); 
    } 
}