Wpf App to Silverlight App – Routed Events

 

El pas d’una aplicació WPF cap a una aplicació Silverlight sembla que hauria de ser un procés senzill i ràpid. Doncs no és ben bé així, tot i que si que ho és si ho comparem a passar una aplicació Winforms a Silverlight.

Les aplicacions WPF en general es caracteritzen per separar la interface gràfica de la lògica de procés gràcies als fitxers amb extensió XAML. Aquest llenguatge ens permet col·locar tots els components gràfics o visuals de les pantalles de la nostra aplicació facilitant així la exportació cap a altres tipus de projectes com son els Wpf Browser App i Silverlight App.

La lògica de procés que trobem als fitxers amb extensió cs o vb (depèn del llenguatge que utilitzem) es poden crear amb un projecte de tipus Library que posteriorment utilitzarem via referència. Tot i que per Silverlight només es poden utilitzar llibreries de tipus Silverlight.

Ara estic experimentant què és passar d’una aplicació Wpf a una aplicació Silverlight. Pensant que seria un procés senzill i ràpid ha resultat ser un autentic mal de cap. Molts problemes que no tenia previst. He fet una llista i vull comentar-ho en diferents posts per tal de no fer molt llarg aquest.

Vull deixar clar abans de començar que la llista no fa referència a els canvis evidents que hi ha al passar d’una aplicació que s’executa en local a una altra que s’executa en client-servidor.

1er problema : Routed Events

Amb WPF arriba els Routed Events que és una manera particular de crear events on es caracteritzen per:

  • Determinar com es comportarà aquest event: Bubbling, Direct o Tuneling
  • Poder invocar handlers de varis agents que estiguin escoltant en un arbre d’elements

Tots els controls WPF ja utilitzen aquest tipus d’events i per tant els utilitzem sense donar-nos compte. En el moment que creem controls d’usuaris s’ens planteja el dubte de si hem d’utilitzar o no Routed Events o continuem utilitzant els events de tota la vida. Pensem que per no ser diferents a la resta de controls és millor utilitzar Routed Events, i així és, no us equivocareu pas. Però amb Silverlight no es poden crear.

Solució

Amb Silverlight s’ha d’utilitzar els events de tota la vida declarant-los, si es vol, de la següent manera:

event RoutedEventHandler myevemt

Així aconseguim que el segon paràmetre sigui de tipus RoutedEventArgs.

A simple vista sembla un canvi de noms, el problema és si amb la nostre aplicació WPF que volem passar a Silverlight hem utilitzat els enrutament Direct o Tunneling haurem de canviar l’estratègia. Si capturem els events des de una altra part de l’arbre de controls també.

Anuncis

3 pensaments sobre “Wpf App to Silverlight App – Routed Events

  1. Retroenllaç: Wpf App to Silverlight App (II part) | My freelancer life
  2. Retroenllaç: Wpf App to Silverlight App (III part) | My freelancer life
  3. Retroenllaç: WPF : Commands | My freelancer life

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out / Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out / Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out / Canvia )

Google+ photo

Esteu comentant fent servir el compte Google+. Log Out / Canvia )

S'està connectant a %s