2016-07-27 5 views
1

私はVS2015(Update 3を使用)を使用して "ブランクアプリケーション(ユニバーサルWindows)"を作成しました。UWP:DLLからページをロード

「クラスライブラリ(ユニバーサルWindows)」プロジェクトを同じソリューションに追加し、「ブランクアプリケーション」プロジェクトのMainPage.xamlを「クラスライブラリ」プロジェクト内の「ビュー」フォルダに移動しました。 XAMLとCSの両方の名前空間を「ビュー」を含むように変更しました)。

最後に、「空のアプリケーション」プロジェクトから「クラスライブラリ」プロジェクトを参照し、「ビュー」名前空間に「使用」をapp.xaml.csに追加し、「空のアプリケーション」プロジェクトを実行しようとしました。

System.AccessViolationExceptionで失敗しました:「保護されたメモリを読み書きしようとしましたが、これはしばしば他のメモリが壊れていることを示しています。

"ブランクアプリケーション"プロジェクトと "クラスライブラリ"プロジェクトの両方が、ターゲットバージョンが "10.0(10586)"で最小バージョンが "10.0(10240)"のUniversal 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(Classic) " - Prism.Coreに存在するターゲットと同じリストです。

私は許可されていないことをしようとしていますか?私が望むのは、ビューを機能グループに基づいて別々のDLLに分解することだけです。

+0

ナビゲート方法を教えてください。プリズムの使用? – Bart

+0

@Bart、まだPRISMを使用していない - 私はそれを使用することができるように参照として追加されました。スタートアップを変更するだけで、ビューの名前空間をapp.xaml.csに追加し、デフォルトのスタートアップ(rootFrame.Navigate(typeof(MainPage)、e.Arguments))コードが実行されるようにします。その後PRISMへの参照をすべて削除しても問題は解決しません。 –

答えて

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(); 
    } 
} 
関連する問題