由於它是Windows 8.1/Windows Phone 8.1。您可以查看商店應用程序 - >通用應用程序 - >類庫(便攜式通用應用程序)。
它編譯成一個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>
:)
爲了解決這個問題的有效載荷檢查出錯誤信息,它應該與此類似:
看它非常謹慎。它試圖引用一個不存在的目錄來獲取正確的文件。解決方案(我唯一知道的)就是去那個目錄做出來的。在我的情況下,它是「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」的文件,其中包含我們的模板。
現在我想編輯我將會把內容在我的自定義控件
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">
而且你們的辛勤工作的結果是:
乾杯:d
這並編譯成.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
是的,我有解決這個問題的辦法(但你不會喜歡它)。如果你還沒有準備好打包一個dll文件,那麼最好把類庫添加到解決方案中。然後你可以在項目中引用它。有很多關於如何將你的dll文件打包成NuGet等的網頁文章。 – 2014-09-05 09:04:36
好的,你說的是我可以將我的類庫與視圖和數據庫編譯爲nuget包? – 2014-09-05 09:11:05