2009-01-27 19 views
7

在Silverlight中,我注意到,代碼隱藏頁類從用戶控件繼承:Silverlight代碼到WPF的便攜性如何?

public partial class Page : UserControl 

在WPF代碼隱藏頁面類從頁面繼承:

public partial class Page1 : Page 

我在想,Silverlight的,是WPF的一個子集,您可以稍後將大塊Silverlight代碼複製到WPF中,反之亦然。但是在這樣的基礎層面上的這種差異表明情況並非如此。

這僅僅是一個異常或複雜的Silverlight應用程序將不會重大改變WPF是不相容的嗎?

回答

4

我的理解是,除了使用XAML之外,Silverlight和WPF都有本質的區別。雖然它們之間似乎存在交叉授粉,但是當Silverlight在沒有像WrapPanel這樣的東西時發貨時,有人在Silverlight中編寫了自己的實現(最終它被添加到Silverlight Toolkit中)。

不要期望從WPF複製和粘貼,除非它是微不足道的代碼。諸如數據綁定之類的東西在Silverlight中稍有不同(例如:不與其他元素綁定)。儘管大多數情況下都有解決方法。

4

看看this article,它介紹了從SL到WPF端口所需做的許多事情。這篇文章中還有一個關於Scott Gu關於這個主題的博客的鏈接;然而,這篇文章談到了谷的博客上沒有提到的一些差異。

+0

請注意,上面的鏈接被打破 – JoshL 2010-12-24 22:58:37

1

Silverlight旨在成爲WPF的兼容子集(至少在「有意義」的地方)。這意味着將應用程序從Silverlight移植到WPF應該是相對直截了當的。朝着另一個方向發展(WPF - > Silverlight)可能會更具挑戰性。

您在問題中給出的例子說明了這一點; Silverlight中不存在默認WPF項目模板中使用的Page類。但是UserControl類同時存在於兩者中。因此,您可以將從Silverlight派生的Silverlight應用程序中的xaml和代碼複製並粘貼到WPF應用程序中,而不會出現任何問題。

Silverlight的某些部分與WPF並不真正兼容,例如,所有HTML DOM Bridge的東西在WPF應用程序中都沒有任何意義,所以它不在那裏。 MediaElement類也有很大不同。