2009-01-27 12 views
7

En Silverlight me di cuenta de que la clase de código subyacente hereda de UserControl:¿Qué tan portátil es el código de Silverlight para WPF?

public partial class Page : UserControl 

En WPF la página de código subyacente clase hereda de Página:

public partial class Page1 : Page 

estaba pensando que Silverlight, siendo un subconjunto de WPF, usted podría copiar grandes bloques de código de Silverlight en WPF más tarde y viceversa. Pero las diferencias como esta a un nivel tan básico indican que este no será el caso.

¿Es solo una anomalía o las aplicaciones complejas de Silverlight serán prácticamente imposibles de usar en WPF sin cambios significativos?

Respuesta

4

La forma en que lo entiendo es que aparte de usar XAML, Silverlight y WPF son esencialmente diferentes. Sin embargo, parece haber una polinización cruzada entre ellos, así que cuando Silverlight se envió sin cosas como WrapPanel, alguien escribió su propia implementación en Silverlight (y finalmente se agregó al Kit de herramientas de Silverlight).

No espere copiar y pegar de WPF a menos que sea un código trivial. Las cosas como el enlace de datos son ligeramente diferentes en Silverlight (p. Ej .: no vinculan a otros elementos). La mayoría de las veces hay soluciones alternativas.

4

Eche un vistazo a this article, habla de muchas de las cosas que tiene que hacer al puerto de SL a WPF. También hay un enlace en ese artículo al blog de Scott Gu sobre el tema; Sin embargo, este artículo habla de algunas diferencias que no se mencionan en el blog de The Gu.

+0

Tenga en cuenta que el enlace de arriba está roto – JoshL

1

Silverlight está diseñado para ser un subconjunto compatible de WPF (al menos donde "tiene sentido"). Esto significa que portar una aplicación de Silverlight a WPF debería ser relativamente sencillo. Ir en la otra dirección (WPF -> Silverlight) es probable que sea significativamente más desafiante.

El ejemplo que da en su pregunta ilustra este punto; la clase de página que se utiliza en la plantilla de proyecto predeterminada de WPF no existe en Silverlight. Pero la clase UserControl existe en ambos. Así que puede copiar y pegar el xaml y el código de su aplicación Silverlight que deriva de UserControl en su aplicación WPF sin ningún problema.

Hay ciertas partes de Silverlight que no son realmente compatibles con WPF, por ejemplo, todo el material HTML DOM Bridge no tendría ningún sentido en una aplicación WPF, por lo que no está allí. Además, la clase MediaElement es significativamente diferente.

Cuestiones relacionadas