2016-07-27 89 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(); 
    } 
}