UWP:从DLL

时间:2016-07-27 10:20:29

标签: uwp prism portable-class-library uwp-xaml

我创建了一个"空白应用程序(通用Windows)"使用VS2015(使用Update 3)。

然后我添加了一个"类库(通用Windows)"投射到相同的解决方案,并从"空白应用程序"移动MainPage.xaml;投射到#34;观看" "类库中的文件夹" project(我还更改了XAML和CS中的命名空间以包含" Views")。

最后,我引用了"类库"来自"空白应用"的项目项目,添加"使用"对于"观看"命名空间到app.xaml.cs并尝试运行"空白应用程序"项目

它因System.AccessViolationException而失败:"尝试读取或写入受保护的内存。这通常表明其他内存已损坏"。

"空白申请"项目和"班级图书馆"该项目针对的是通用Windows,其目标版本为" 10.0(10586)"和#34; 10.0(10240)"的最低版本。这两个项目还引用了PRISM以及一个便携式类库"目标" .NET Framework 4.5"," ASP.NET Core 1.0"," Windows 8"," Windows Phone 8.1", " Windows Phone Silverlight 8"," Xamarin.Android"," Xamarin.iOS"和#34; Xamarin.iOS(经典)" - 与Prism.Core中相同的目标列表。

我是否尝试做一些不允许的事情?我想要的是能够根据功能组将我的观点分解为单独的DLL。

1 个答案:

答案 0 :(得分:0)

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

<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();
    }
}