2010-09-03 8 views
6

Ho lavorato a un'app di Windows Phone 7 e, dopo un po 'di ricerca su Google, sembra che per le immagini che ho aggiunto al progetto Visual Studio, ho bisogno di impostare l'azione di creazione su "Contenuto" per essere in grado di fare riferimento alle immagini nella mia app.qual è l'azione di compilazione corretta per i file di immagine di Windows Phone 7?

Tuttavia, il modello di progetto Lista Windows Phone Application include un'immagine (ArrowImg.png) che ha la sua Operazione di generazione impostato su "risorse", ed è ancora disponibile per essere referenziato dall'applicazione.

Mi chiedevo se qualcuno potesse confermare che dovremmo sicuramente usare l'azione di compilazione del contenuto, o se c'è un modo per accedere alle immagini aggiunte a un progetto con l'azione di creazione delle risorse, come mostrato nell'esempio del progetto, che dovremmo usare invece?

risposta

10

Se si imposta l'azione su "Contenuto", l'immagine viene inclusa "così com'è" nell'XAP. Se si imposta l'azione su "Risorsa", l'immagine viene incorporata in una DLL condivisa.

In molte situazioni è possibile utilizzare entrambi. Potrebbero esserci problemi di prestazioni o di altro tipo nell'utilizzo di uno piuttosto che di un altro, ma non ne sono a conoscenza e non ne ho mai notato nessuno.

Per quello che vale, a meno che non sia necessario renderlo specificamente una risorsa, utilizzo il contenuto.

Con gli strumenti attuali (Beta), ho visto VS lamentano del fatto che le immagini direttamente riferimento in XAML deve essere impostato su "risorse" (se impostato su "Contenuto"), ma l'applicazione funziona bene con entrambi. Speriamo che questo sia un problema che verrà affrontato negli strumenti di RTM.

Per ulteriori informazioni si veda la discussione in What are the various "Build action" settings in Visual Studio project properties and what do they do?

+0

grazie per la risposta - in modo da avere sicuramente riusciti a fare riferimento a un'immagine con una risorsa azione di accumulo negli strumenti di beta WP7? (Ho provato per un po 'a farlo, ma non sono stato in grado di farlo, il che è stato un po' frustrante in quanto è quello che fa il progetto di esempio ...) –

+0

Ho avuto accesso alle immagini come risorse negli strumenti beta nel codice utilizzando Applicazione .GetResourceStream (nuovo Uri (nome file, UriKind.Relative)); Ho anche fatto riferimento direttamente alle immagini di entrambi i tipi di build in XAML. VS crea un avvertimento sulla risorsa ma funziona ancora. Suppongo che dipenda dal modo in cui si desidera farvi riferimento. –

+4

L'utilizzo di contenuti anziché risorse ridurrà anche la dimensione degli assembly, riducendo il tempo di avvio dell'applicazione (vedere il [whitepaper ad alte prestazioni] (http: //www.jeff. wilcox.name/2010/08/windows-phone-performance/) per i dettagli). –

3

O costruire l'azione è corretta.

Vale anche la pena considerare quando si risolvono i problemi relativi all'azione di creazione.

Ho visto poche persone che si sono trovate nei guai con questo perché ritengono di aver impostato la loro azione build in modo inappropriato.

È possibile impostare l'azione di compilazione in qualsiasi modo in base alle proprie esigenze di quando si deve sostenere il costo del tempo di caricamento, è sufficiente regolare il percorso per adattarlo.

Altre informazioni sull'argomento di questo post.

Set source to image in C#

Si può paragonare il contenuto per i pigri versione carico delle risorse.

La differenza è che si dovranno sostenere il colpo prestazioni di tutte le risorse quando gli assembly vengono caricati per iniziare la vostra applicazione.

Il contenuto, d'altra parte, il riscontro di prestazioni viene posticipato a quando lo si utilizza .

Quale è più adatto varierà su un caso per caso.

Si noti inoltre che il percorso delle risorse di riferimento e del contenuto di è diverso come si può vedere qui.

//Uri uri = new Uri("/Resources/Images/MyImage.jpg", UriKind.Relative); // Content 
    Uri uri = new Uri("/PhoneApp;component/Resources/Images/MyImage.jpg", UriKind.Relative); // Resource 
    BitmapImage imgSource = new BitmapImage(uri); 
    image1.Source = imgSource; 
+0

Inoltre, vale la pena notare, puoi dare un'occhiata all'impatto ha sulla confezione XAP rinominando il tuo XAP in ZIP e aprendolo per dare un'occhiata. –