2009-01-27 11 views
7

In Silverlight bemerkte ich, dass die Code-Behind-Seite Klasse von Usercontrol erbt:Wie portabel ist Silverlight-Code für WPF?

public partial class Page : UserControl 

In WPF die Code-Behind-Seite Klasse von Seite erbt:

public partial class Page1 : Page 

ich, dass Silverlight dachte, sein eine Teilmenge von WPF, könnten Sie später große Blöcke von Silverlight-Code in WPF kopieren und umgekehrt. Aber Unterschiede wie diese auf einer solchen Basis zeigen an, dass dies nicht der Fall sein wird.

Ist das nur eine Anomalie oder komplexe Silverlight-Anwendungen ziemlich unportable zu WPF ohne wesentliche Änderungen sein?

Antwort

4

So wie ich es verstehe, ist, dass abgesehen von den beiden mit XAML, Silverlight und WPF sind wesentlich verschieden. Es scheint jedoch eine gegenseitige Befruchtung zwischen ihnen zu geben. Als Silverlight ohne WrapPanel ausgeliefert wurde, schrieb jemand eine eigene Implementierung in Silverlight (und wurde schließlich dem Silverlight Toolkit hinzugefügt).

Erwarten Sie nicht von WPF zu kopieren und einzufügen, wenn es trivial Code. Dinge wie Datenbindung sind in Silverlight etwas anders (zB: keine Bindung an andere Elemente). Die meiste Zeit gibt es jedoch Problemumgehungen.

4

Werfen Sie einen Blick auf this article, es spricht über viele der Dinge, die Sie tun müssen, um von SL zu WPF zu portieren. Es gibt auch einen Link in diesem Artikel zu Scott Gus Blog zu diesem Thema; In diesem Artikel wird jedoch auf einige Unterschiede eingegangen, die im Blog von The Gu nicht erwähnt wurden.

+0

Beachten Sie, dass der obige Link unterbrochen ist – JoshL

1

Silver eine kompatible Teilmenge von WPF ausgebildet ist (zumindest, wo sie „sinnvoll“). Dies bedeutet, dass die Portierung einer App von Silverlight auf WPF relativ einfach sein sollte. In die andere Richtung zu gehen (WPF -> Silverlight) dürfte wesentlich herausfordernder sein.

Das Beispiel, das Sie in Ihrer Frage angeben, veranschaulicht diesen Punkt; Die Page-Klasse, die in der Standard-WPF-Projektvorlage verwendet wird, ist in Silverlight nicht vorhanden. Aber die UserControl-Klasse existiert in beiden. So können Sie das XAML und den Code aus Ihrer Silverlight-Anwendung, die von UserControl abgeleitet ist, problemlos in Ihre WPF-Anwendung kopieren und einfügen.

Es gibt bestimmte Teile von Silverlight, die nicht wirklich kompatibel mit WPF sind, zum Beispiel alle HTML-DOM-Bridge-Zeug macht keinen Sinn in einer WPF-Anwendung, so ist es nicht da. Auch die MediaElement-Klasse unterscheidet sich erheblich.