PDA

View Full Version : [.NET Silverlight] Come si gestisce la parte grafica senza i css?


-Ivan-
16-04-2011, 12:39
Ho da pochissimo iniziato un progetto che devo sviluppare in Silverlight, con visual studio 2010 (che ancora conosco veramente poco), mi trovo in difficoltà a capire come si debbano gestire le dimensioni degli oggetti nella parte grafica.

In una applicazione classica io creo la pagina aspx che ha una parte html ed un codebehind in c# e gli collego un foglio di stile.

Nei progetti Silverlight ho la pagina xaml con gli elementi silverlight.
Poniamo ad esempio che io metta una griglia, gli posso dare delle dimensioni (height e width) ma solo in pixel, quindi non sono relative e non vanno bene, se metto su auto invece la fa delle dimensioni necessarie a mostrarla tutta, di conseguenza se è troppo grossa esce dallo schermo e non vengono nemmeno aggiunte le scrollbar quindi una parte è proprio invisibile.
Non esistono i div o altro, quindi non capisco a livello di gestione delle dimensioni come mi devo comportare per fare un'applicazione valida.

Qualcuno di voi ha esperienza di silverlight e mi sa dare qualche delucidazione?

tomminno
16-04-2011, 13:43
Lo sviluppo in Silverlight ha poco a che vedere con lo sviluppo di una pagina Web. E' decisamente più simile allo sviluppo di una applicazione desktop.
Per il posizionamento degli elementi dovrai ricorrere ad un Layout Manager, generalmente Grid o StackPanel.

-Ivan-
16-04-2011, 19:52
Lo sviluppo in Silverlight ha poco a che vedere con lo sviluppo di una pagina Web. E' decisamente più simile allo sviluppo di una applicazione desktop.
Per il posizionamento degli elementi dovrai ricorrere ad un Layout Manager, generalmente Grid o StackPanel.

Grazie per la risposta, il problema principale non è però il posizionamento (che non potendo gestire i css mi fa comunque rabbrividire), è il DIMENSIONAMENTO.
Mi trovo delle situazioni allucinanti in cui gli oggetti sono più grandi dello schermo, io ho bisogno di settarli in proporzione alla pagina del browser e sembra non essere possibile.
Ci sarà sicuramente un modo però non conosco quasi per niente silverlight ed avrei bisogno di delucidazioni su come procedere per creare una applicazione fatta come si deve.

sneeze
16-04-2011, 23:59
Come ti ha già accennato tomminno la soluzione al tuo problema sono le grid. Infatti queste ultime si possono utilizzare come "layout manager" di uno userControl (page) silverlight. Puoi dividerle in righe e colonne assegnando a queste ultime dimensioni relative (abbastanza assimilabile a quello che sei abituato a fare con le div e i css) una volta fatto questo i controlli che vai ad aggiungere alla pagina saranno contenuti nelle celle di questa Grid e di conseguenza dimensionati automaticamente in base alle proporzioni che hai voluto assegnare alle varie righe e colonne della grid. In questo modo riesci perfettamente a gestire i dimensionamenti relativi alle dimensioni della finestra del browser. Per quello che riguarda invece i css ti consiglio di acquistare un buon manuale per silverlight (ce ne sono tanti fatti bene) e di studiarti gli style xaml, le resources e i dictionaryResources. Vedrai che capirai ben presto che ci sono altri strumenti analoghi che ti permettono di gestire bene il tutto anche senza css.

Ad ogni modo non valutare silverlight come se fosse uno strumento per sviluppare siti web, la sua mission è quella di creare web application, rendendo la user experience il più possibile simile a quella di una applicazione desktop.

cdimauro
17-04-2011, 08:59
E non solo: anche sui telefonini è una manna dal cielo. :cool:

-Ivan-
17-04-2011, 10:49
Come ti ha già accennato tomminno la soluzione al tuo problema sono le grid. Infatti queste ultime si possono utilizzare come "layout manager" di uno userControl (page) silverlight. Puoi dividerle in righe e colonne assegnando a queste ultime dimensioni relative (abbastanza assimilabile a quello che sei abituato a fare con le div e i css) una volta fatto questo i controlli che vai ad aggiungere alla pagina saranno contenuti nelle celle di questa Grid e di conseguenza dimensionati automaticamente in base alle proporzioni che hai voluto assegnare alle varie righe e colonne della grid. In questo modo riesci perfettamente a gestire i dimensionamenti relativi alle dimensioni della finestra del browser. Per quello che riguarda invece i css ti consiglio di acquistare un buon manuale per silverlight (ce ne sono tanti fatti bene) e di studiarti gli style xaml, le resources e i dictionaryResources. Vedrai che capirai ben presto che ci sono altri strumenti analoghi che ti permettono di gestire bene il tutto anche senza css.

Ad ogni modo non valutare silverlight come se fosse uno strumento per sviluppare siti web, la sua mission è quella di creare web application, rendendo la user experience il più possibile simile a quella di una applicazione desktop.

Ah ok grazie, domani al lavoro farò un po' di esperimenti.
Per ora ho praticamente solo smanettato un po' per cercare di capire come funzionava.
Ho un altro dubbio mistico che mi affligge e che le guide online non citano, vediamo se mi sapete delucidare anche su questo:

dovendo comunque sviluppare una applicazione web, la pagina xaml contiene i controlli silverlight, poi ci sono le pagine aspx.
Appena crei un nuovo progetto hai la main.xaml e una pagina aspx di test dentro cui visualizzi il contenuto silverlight della main.
Quando lanci l'applicazione lanci la pagina.aspx (perchè è predefinito in app.xaml).
Io per creare un sito vero e proprio devo creare nuove pagine aspx e contemporaneamente altre pagine xaml con il loro contenuto (linkandolo in qualche modo) giusto?
Oppure creo solo pagine xaml?

Kralizek
17-04-2011, 11:58
E non solo: anche sui telefonini è una manna dal cielo. :cool:

hai comprato un WP7?

tomminno
17-04-2011, 14:33
E non solo: anche sui telefonini è una manna dal cielo. :cool:

Mah su quali telefoni???
Fa fatica perfino a funzionare su Mac figuriamoci.
Su Symbian c'è una improbabile versione 2.
Se uno è interessato a sviluppare cercando di coprire un buon numero di dispositivi, l'unica via è Flex.

Kralizek
17-04-2011, 18:46
Mah su quali telefoni???
Fa fatica perfino a funzionare su Mac figuriamoci.
Su Symbian c'è una improbabile versione 2.
Se uno è interessato a sviluppare cercando di coprire un buon numero di dispositivi, l'unica via è Flex.

http://create.msdn.com/en-US/

cdimauro
17-04-2011, 18:49
hai comprato un WP7?
No, ma ci sto lavorando. Da qualche mese mi hanno passato al gruppo di sviluppo su mobile, e dopo una settimana di Objective-C fortunatamente mi hanno messo su WP7 (C# è tutta un'altra cosa).

Sicuramente a breve dovremo comprare un telefonino, perché l'emulatore funziona benissimo, ma un terminale reale in ogni caso serve.
Mah su quali telefoni???
Fa fatica perfino a funzionare su Mac figuriamoci.
Su Symbian c'è una improbabile versione 2.
Se uno è interessato a sviluppare cercando di coprire un buon numero di dispositivi, l'unica via è Flex.
Beh, WP7 è basato su Silverlight 3 (è un subset, con qualche cosa aggiunta).

E... funziona molto bene. :)

Kralizek
17-04-2011, 18:55
credo che Tomminno si riferisca ad applicazioni SL nei browser mobile...

cmq, io ci stavo pensando, e dopo le novitá annunciate in questo Mix11, credo proprio che per natale me ne compro uno. Se solo radio deejay facesse un'app per WP7...

alla fine sull'iphone io uso l'app del Corriere della Sera, Radio Deejay e Spotify. Le altre sono rinunciabili/sostituibili.

tomminno
17-04-2011, 19:23
http://create.msdn.com/en-US/

Si, rimangono fuori solo sistemi operativi sconosciuti al pubblico come Android, Symbian e iOS. Praticamente il 99% del mercato dei cellulari...
Per non parlare del fatto che Silverlight, su desktop, funziona solo su Windows. Già su Mac è un incubo farlo funzionare a dovere.
Moonlight lasciamo perdere...
E tutto questo per un qualcosa che dovrebbe essere fruibile da chiunque sul web???
Ormai non siamo più in un'era dominata da Microsoft, il mercato si è esteso andando ben oltre.

cdimauro
17-04-2011, 20:34
credo che Tomminno si riferisca ad applicazioni SL nei browser mobile...
Ho capito. E ha ragione.
cmq, io ci stavo pensando, e dopo le novitá annunciate in questo Mix11, credo proprio che per natale me ne compro uno. Se solo radio deejay facesse un'app per WP7...

alla fine sull'iphone io uso l'app del Corriere della Sera, Radio Deejay e Spotify. Le altre sono rinunciabili/sostituibili.
Abbi fede. :cool:
Si, rimangono fuori solo sistemi operativi sconosciuti al pubblico come Android, Symbian e iOS. Praticamente il 99% del mercato dei cellulari...
Per Android mi sembra ci siano voci che dovrebbe arrivare un plug-in con Silverlight.

Symbian è destinato all'oblio.

L'unico che manca seriamente all'appello sarebbe iOS, e in effetti è una grossa perdita.

Per non parlare del fatto che Silverlight, su desktop, funziona solo su Windows. Già su Mac è un incubo farlo funzionare a dovere.
Moonlight lasciamo perdere...
E tutto questo per un qualcosa che dovrebbe essere fruibile da chiunque sul web???
Ormai non siamo più in un'era dominata da Microsoft, il mercato si è esteso andando ben oltre.
Concordo, ma rimane una bella tecnologia. Immatura o assente nelle altre piattaformi, ma a Moonlight, ad esempio, non può mica pensare Microsoft.

Kralizek
17-04-2011, 21:34
Si, rimangono fuori solo sistemi operativi sconosciuti al pubblico come Android, Symbian e iOS. Praticamente il 99% del mercato dei cellulari...
Per non parlare del fatto che Silverlight, su desktop, funziona solo su Windows. Già su Mac è un incubo farlo funzionare a dovere.
Moonlight lasciamo perdere...
E tutto questo per un qualcosa che dovrebbe essere fruibile da chiunque sul web???
Ormai non siamo più in un'era dominata da Microsoft, il mercato si è esteso andando ben oltre.

tutto giustissimo. ma il mio link, mea culpa per la mancanza di commento, era per indicare che si parlava di SL come mezzo per sviluppare applicazioni "native" per WP7, escludendo quindi il contesto web. In quest'ottica, lamentarsi del mancato supporto di SL per Android, Symbian e iOS é come lamentarsi che ObjectiveC non gira su Android. ;)

tomminno
18-04-2011, 10:21
Concordo, ma rimane una bella tecnologia. Immatura o assente nelle altre piattaformi, ma a Moonlight, ad esempio, non può mica pensare Microsoft.

E' che Microsoft dovrebbe capire (anche se non lo farà mai) che se vuole vedere una sua tecnologia vincente sul mercato non può più limitarsi al suo ampio orticello, perchè là fuori ci sono sterminate piantagioni.

Quanto a Symbian, sarà pure destinato all'oblio però al momento sta al secondo posto nella classifica degli OS più venduti.

Kralizek
18-04-2011, 11:28
giusto per, si sta parlando di Silverlight come alternativa a Flash, nel qual caso concordo con tomminno, o della piattaforma di sviluppo di windows phone 7?

cdimauro
18-04-2011, 14:19
E' che Microsoft dovrebbe capire (anche se non lo farà mai) che se vuole vedere una sua tecnologia vincente sul mercato non può più limitarsi al suo ampio orticello, perchè là fuori ci sono sterminate piantagioni.
D'accordissimo, ed è per questo che .NET e C# sono standard ECMA. Chiunque può implementarli.

E' un po' come HTML, XML, SVG, ecc.: sono tutti standard, poi ognuno se li implementa.
Quanto a Symbian, sarà pure destinato all'oblio però al momento sta al secondo posto nella classifica degli OS più venduti.
Mai negato questo, ma, pur con tutta la base installata, Symbian non ha più futuro.

Di già realizzare applicazioni Symbian era abbastanza complicato con l'SDK fornito. Senza contare le problematiche dovute alla notevole frammentazione dei telefonini (in termini di hardware).

Difatti, visto che praticamente tutti ne avevano una VM, si preferiva sviluppare per J2ME, in modo da ridurre i tempi di sviluppi.

La situazione è migliorata con l'introduzione delle Qt, ma è avvenuta troppo tardi e, in ogni caso, con la decisione di Nokia di passare a WP7, non ha più senso continuare a investirci.
giusto per, si sta parlando di Silverlight come alternativa a Flash, nel qual caso concordo con tomminno, o della piattaforma di sviluppo di windows phone 7?
Si sono fusi i discorsi, anche se vanno sicuramente inquadrati nei rispettivi contesti.

Su WP7 la situazione è abbastanza buona, ma serve il prossimo aggiornamento che porterà a integrare alcune funzionalità che, al momento, sono purtroppo assenti (alcune sono già presenti in realtà, ma non abilitate).

Come alternativa a Flash, non sono della stessa opinione. Ma mi sono già espresso quando ho parlato di standard et similia.

Kralizek
18-04-2011, 15:07
Come alternativa a Flash, non sono della stessa opinione. Ma mi sono già espresso quando ho parlato di standard et similia.

da un punto di vista prettamente di sviluppo, hai ragione. da quello marketing meno. se MS volesse pushare la sua tecnologia nei browser (anche se il pesante impegno in html5 mi fanno dubitare a riguardo), dovrebbe far si che la maggior parte possibile dei browsers.

cdimauro
18-04-2011, 16:43
Lo capisco, ma mi sembra un'esagerazione. HTML5 è standard (quasi; fra 3 anni), è stato fortemente voluto da Apple e Google, ma nessuno dei due ha fornito un render HTML5 per qualunque piattaforma.

Mi sembra chiedere troppo per Silverlight, anche se è una tecnologia di casa Microsoft.

Poi è chiaro che commercialmente può fare quello che vuole. Se sono vere le voci di un plug-in Silverlight per Android, può essere l'inizio di una strategia come quella che descrivete.