Ho creato un'applicazione silverlight/wpf con doppia destinazione. Non è semplice come effettuare il porting l'uno con l'altro ...
I tuoi primi passi dovrebbero essere di guardare la documentazione su dove wpf e silverlight differiscono per capire un po 'meglio il tuo problema XAML Processing Differences Between Silverlight and WPF. Non fermarti qui. Comprendi i modelli di progettazione che entrano in gioco in base ai diversi ambienti applicativi. Ora stai iniziando a farti un'idea di cosa hai a che fare.
Durante la creazione di interfacce utente per wpf e silverlight, è necessario prestare molta attenzione ai controlli e agli spazi dei nomi in uso. La condivisione del codice dell'interfaccia utente può essere estremamente noiosa, spesso è più semplice creare due livelli dell'interfaccia utente separati che utilizzano modelli condivisi in cui è applicabile. Gran parte della funzionalità dell'interfaccia utente presente in un'applicazione rich client è diversa dalla funzionalità dell'applicazione Silverlight. Probabilmente offrirai più intense visualizzazioni di dati nella tua app wpf invece che visualizzazioni più concise nella tua app silverlight. Alla fine, probabilmente sarai in grado di raggiungere gli stessi obiettivi, ma sarà più difficile del solo retarget e deployment.
Se si sta creando un'applicazione da zero, si consiglia di creare contemporaneamente l'applicazione wpf e l'applicazione silverlight.In questo modo, avrai l'opportunità di astrarre i livelli di servizio e le strategie di accesso ai dati utilizzate nei diversi ambienti. Silverlight avrà probabilmente bisogno di accedere ai dati tramite i servizi web, mentre la tua app wpf potrebbe parlare con un'istanza di database locale. Questo può essere realizzato abbastanza facilmente. Utilizzare un contenitore IoC o qualcosa per iniettare le opportune implementazioni del servizio. Questa area offre l'opportunità per il maggior numero di riutilizzo del codice. È possibile creare tutta la logica di visualizzazione e la logica di servizio da condividere tra le due interfacce utente. È inoltre possibile creare logica aziendale condivisa e logica di accesso ai dati.
Se non si dispone di un archivio dati locale nell'app rich client, quindi dimenticare il paragrafo successivo.
Se si prevede di avere un client non in linea connesso occasionalmente (wpf app), sarà probabilmente necessario elaborare una strategia e un'architettura di sincronizzazione. A seconda di quanto siano complicate le strutture dati, questo può essere piuttosto difficile. La costruzione in logica di sincronizzazione complessa con i framework disponibili è un P.I.T.A. Potrebbe essere necessario crearne di propri o vivere con le restrizioni di un altro.
Una dichiarazione di consigli: iniziare con i test e terminare con i test
duplicati di http://stackoverflow.com/questions/3626936/silverlight-4-and-wpf-compatibility e http://stackoverflow.com/questions/598703/definitive-sources-per-the-difference-between-silverlight-and-wpf –
anche dup di http://stackoverflow.com/questions/944608/ – SergioL