我有一個Silverlight的複雜控件,我需要在WPF中具有相同的功能。任何方式來分享代碼庫?是否可以爲WPF和Silverlight編譯相同的控件?
4
A
回答
3
實際上是由三個方面,將需要共享:
- 代碼文件(例如*的.cs *的.vb)
- XAML文件(包括主題)
- 項目文件(例如爲*的.csproj和* .vbproj)
由於雅羅指出的那樣,你可以使用代碼文件,這是由C#和VB.Net支持有條件的併發症。請記住,Silverlight項目將默認定義SILVERLIGHT符號,以便您可以在條件語句中使用它。
代碼文件的另一個技巧是使用partial classes。這使您可以將僅適用於Silverlight或WPF(但不是兩個)的整個代碼塊放在單個文件中。然後在您的項目中選擇性地包含該文件。
XAML文件是一個有點艱難,因爲有通過WPF支持幾件事情是不支持Silverlight(如自定義MarkupExtensions等)。在實踐中,我只需複製XAML文件並根據需要進行合併。
項目文件必須手動維護,這不是一件麻煩事。
0
我寫了一個blog article關於共享.xaml
文件。我們的想法是在.xaml
建立在源代碼中的代理控制和使用控制:
namespace UnifiedXaml
{
public class MyWrapPanel: WrapPanel { }
}
<UserControl x:Class="UnifiedXaml.TestControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ux="clr-namespace:UnifiedXaml">
<ux:MyWrapPanel></ux:MyWrapPanel>
</UserControl>
如果控制在WPF和Silverlight,use styles不同的功能。
相關問題
- 1. WPF和Silverlight是否碰撞?
- 2. 將Silverlight重新編譯爲WPF問題
- 3. WPF和Silverlight的相同代碼基礎?
- 4. 爲Silverlight 4重新編譯Silverlight 3控件的任何原因?
- 5. 是否可以通過HwndHost控件來繪製WPF控件?
- 6. 編譯器是否會爲相同的源生成不同的.pdb文件
- 7. 是否可以在iOS上編譯爲Arduino編寫的代碼?
- 8. 是否可以將nodejs項目編譯爲單個JavaScript文件?
- 9. 我可以將我的Silverlight 4應用程序編譯爲WPF嗎?
- 10. 是否可以設置silverlight數據包控件的頁數
- 11. 編譯器是否只編譯可以執行的代碼?
- 12. 是否可以在不同的機器上編譯?
- 13. 是否可以反編譯NSIS腳本?
- 14. gcc是否可以不編譯代碼?
- 15. 是否可以恢復ASP.NET預編譯?
- 16. 是否可以在Linux上編譯VST?
- 17. 是否可以用mpif90編譯pgplot?
- 18. 是否可以將C文件編譯爲.app文件而不是.exe文件?
- 19. WPF和Silverlight是否使用相同的類來進行基本繪圖?
- 20. 是否可以編輯和重新編譯iOS內核?
- 21. 是否可以通過JavaScript爲Silverlight控件捕獲鼠標事件?
- 22. 兩個控制器是否可以有相同的中心
- 23. 編譯時間和類加載時間是否相同?
- 24. 是否可以將Vue.js模板編譯爲靜態HTML和CSS文件?
- 25. 如何爲WPF和Silverlight重用相同的視圖?
- 26. 是否可以更改WPF控件的父項
- 27. 我可以使用相同的ant編譯文件的窗口和unix
- 28. 是否有Silverlight的所有者繪製控件,wpf
- 29. silverlight控件可以同時擁有DataTemplate和ControlTemplate嗎?
- 30. 是否可以使用Silverlight編寫屏幕錄製軟件?
http://msdn.microsoft.com/en-us/library/x435tkbk.aspx +您可以爲每個平臺創建項目文件。 – 2011-03-13 09:03:52
@Jaroslav Jandek,謝謝C.O. – user626528 2011-03-13 09:07:44
有時可以創建項目並將其他項目的文件添加爲鏈接。但是一些Silverlight控件具有不同的屬性,所以條件編譯應該有所幫助。 – vorrtex 2011-03-13 16:15:26