2014-09-04 64 views
3

我正在創建一個Windows Phone 8.1應用程序,該應用程序應該充當其他Windows Phone 8.1應用程序的庫。在我的新應用程序中,我可以將庫項目添加到解決方案中,因此它可以作爲一種外部庫來使用,而這正是我想要的功能。
但是,我想知道是否有某種方式將我的WP庫應用程序導出到,例如,我可以添加爲我的新應用程序的引用的.dll。有沒有其他辦法可以實現這個目標?

從視圖和數據庫的Windows 8.1/Windows Phone 8.1應用程序創建一個DLL

值得一提的是,我的圖書館應用程序將有視圖,甚至數據庫,而不只是方法來處理來自主應用程序的數據。

回答

6

由於它是Windows 8.1/Windows Phone 8.1。您可以查看商店應用程序 - >通用應用程序 - >類庫(便攜式通用應用程序)。


enter image description here

它編譯成一個dll後,只需添加一個參考所述DLL的參考文件夾。

要在C#中使用您的庫,只需鍵入您用來創建庫的名稱空間。

using your_namespace_from_library; 

要使用您的意見,哪些不是從XAML,只需在XAML文件中輸入您的命名空間以及

<Page xmlns:YOUR_AWESOME_TAG="using:your_namespace_from_library"> 

然後你就可以這樣使用標籤從庫:

<YOUR_AWESOME_TAG:Your_View> 

:)


爲了解決這個問題的有效載荷檢查出錯誤信息,它應該與此類似:

enter image description here

看它非常謹慎。它試圖引用一個不存在的目錄來獲取正確的文件。解決方案(我唯一知道的)就是去那個目錄做出來的。在我的情況下,它是「C:\ Users \ Duan \ Documents \ Visual Studio 2013 \ Projects \ Chubosaurus.Charts_Old2 \ Chubosaurus.Charts \ bin \ Debug \ Chubosaurus.Charts」

由於某些原因它決定創建在dll被編譯到的Debug文件夾中的額外目錄。所以創建該文件夾是庫的名稱。這是你不會喜歡的部分。將Debug文件夾的全部內容複製到您剛剛創建的目錄(主要是主題文件夾)。

再次運行您的程序,您的問題將被解決。 但不幸的是,每次編譯該dll項目時都必須這樣做。這就是爲什麼我說只是添加庫項目作爲解決方案的一部分,直到你準備好將它打包到NuGet中。希望有所幫助。


一個簡單的庫(教程)

說我想爲圖表通話ChubCharts,我創建的項目,它加載了我與一個默認的便攜式庫移植庫文件叫我做的Class1.cs

的第一件事是刪除文件:

然後我在模板控件從添加添加 - >添加新項 - > TEM電鍍控制

我的名字是ChubosaurusCharts它應該看起來像這樣一旦它的生成。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Runtime.InteropServices.WindowsRuntime; 
using Windows.UI.Xaml; 
using Windows.UI.Xaml.Controls; 
using Windows.UI.Xaml.Data; 
using Windows.UI.Xaml.Documents; 
using Windows.UI.Xaml.Input; 
using Windows.UI.Xaml.Media; 

public sealed class ChubosaurusCharts : Control 
{ 
    public ChubosaurusCharts() 
    { 
     this.DefaultStyleKey = typeof(ChubosaurusCharts); 
    } 
} 

現在我有了最簡單的控制。讓我們應用的ContentTemplate到它,所以我可以使之成爲一個複合控件,因此實際上有事可做:)

視覺工作室,使一個文件夾調用主題解決方案內。該文件夾內有一個名爲「Generic.xaml」的文件,其中包含我們的模板。

enter image description here

現在我想編輯我將會把內容在我的自定義控件

Generic.xaml

<Style TargetType="local:ChubosaurusCharts"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="local:ChubosaurusCharts"> 
       <Border 
        Background="{TemplateBinding Background}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        BorderThickness="{TemplateBinding BorderThickness}"> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

默認情況下,它只是一個普通的老<Border> :(,我不想那樣,因爲這是一個圖表庫,我想添加一些東西到Vi SUAL樹,主要是<Canvas>,所以讓我們改變成:

<Style TargetType="local:ChubosaurusCharts"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="local:ChubosaurusCharts"> 
       <Canvas Background="{TemplateBinding Background}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" DataContext="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}}"> 
        <ContentPresenter Content="{Binding Surface}"></ContentPresenter> 
       </Canvas>      
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

現在,你應該的想你可以,只要你想,你需要正確顯示控制添加儘可能多的XAML標記。我只想要一個<Canvas>


現在有一點數據綁定魔,我的畫布綁定到我的控制爲方便:)的帆布

public sealed class ChubosaurusCharts : Control 
{ 
    public ChubosaurusCharts() 
    { 
     this.DefaultStyleKey = typeof(ChubosaurusCharts); 
     this.Surface = new Canvas(); 
    } 

    private Canvas surface; 

    public Canvas Surface 
    { 
     get 
     { 
      return surface; 
     } 
     set 
     { 
      surface = value; 
     } 
    } 
} 

現在,它已經準備好使用:d

將便攜式庫添加到名稱空間中添加的解決方案中。編譯。

忽略瘋狂年級學校代數和我RenderFunction(這只是增加了線到畫布)

加入我們的自定義控制炫魅廣東。XAML,你現在還可以從工具箱拖控制:d

<chubo:ChubosaurusCharts x:Name="my_chart"> 

而且你們的辛勤工作的結果是:

enter image description here

乾杯:d

+0

這並編譯成.dll,但是當我在我的庫中創建一個視圖,然後調用我的應用程序,就像這樣:'Page page = ClassLibraryTest.Class1.GetPage();'我得到錯誤:「Payload文件」不存在「。我發現這[回答](http://social.msdn.microsoft.com/Forums/windowsapps/en-US/51111470-8a86-44d4-acb8-e268afa7564e/payload-file-does-not-exist-compile-error )雖然很古老,但似乎是合理的。你有什麼建議嗎? – 2014-09-05 08:39:35

+0

是的,我有解決這個問題的辦法(但你不會喜歡它)。如果你還沒有準備好打包一個dll文件,那麼最好把類庫添加到解決方案中。然後你可以在項目中引用它。有很多關於如何將你的dll文件打包成NuGet等的網頁文章。 – 2014-09-05 09:04:36

+0

好的,你說的是我可以將我的類庫與視圖和數據庫編譯爲nuget包? – 2014-09-05 09:11:05

相關問題