Silverlight roztažení přes celé okno   otázka

Silverlight

Dobrý den,

poradil by někdo prosím, jak udělat webovou aplikaci v silverlightu, která bude vždy přesně přes celé okno v prohlížeči, tak aby nebyly zobrazeny (a ani potřeba) posuvníky?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S následujícím HTML:

<html>
  <body>
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"></object>
  </body>
</html>

Jinými slovy, pokud bude prvek <object> přímým a jediným následovníkem prvku <body> (či pokud bude hlouběji ve struktuře dokumentu, ale obsah, který jej obalí, bude mít nulové marginy, paddingy a žádný vizuální obsah atp.), pak bude vložený Silverlight na celé šíři a výši dokumentu.

Pokud by se přesto zobrazovali posuvníky, lze je skrýt pomocí CSS vlastnosti overflow:hidden prvku <body>.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

okej díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Když ale budu chtít zachovat poměr stran? Dejme tomu, že si vytvořím v Expressionu layout o 640px na 480px a poté ho budu chtít spustit na webu s tím, aby byl vycentrován na střed a roztáhnut ke krajům obrazovky se zachováním poměru stran.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S tímhle už bude krapet problém, totiž:

HTML umí to, že když se u obrázku <img> nespecifikuje poměr stran, použije se tomu obrázku přirozený, řekněme pak, že máte:

<body style="margin:0">
  <img src="640x480.png" style="display:block;height:100%;margin:0 auto;"/>
</body>

Tento obrázek je převeden na blokový element (aby fungovalo horizontální vycentrování pomocí margin) a zvětšen na 100% výšky stránky, šířka se pak adaptuje tak, jak by člověk čekal.

Pokud jde o prvek <object>, který se používá k hostování Silverlightu, narazíte. Není totiž už tak dobře navržen jako <img> (respektive je na tom stejně bídně jako box model HTML, což je fraška od začátku až do konce) a proto s takto jednoduchou CSS manipulací nejspíše nevystačíte. Možná se tu najde někdo s větším přehledem než já, kdo Vám takové CSS vymyslí, ale já sám jsem k tomu skeptický - i kdyby se mi to podařilo vymyslet čistě pomocí CSS, pravděpodobně by ten stylopis sabotoval některý majoritní webový prohlížeč a je s tím zkrátka jenom trápení.

Navrhuji hodit za hlavu HTML a zaměřit se na návrh UI v Silverlightu. Váš layout by měl být adaptibilní k rozličným rozměru, takže trvat na daném aspect ratiu byste ve vlastním zájmu neměl. Spíš se pokuste nějak rozumně načrtnout Grid tak, aby využil na maximum prostor, který mu okno webového prohlížeče poskytne.

Pokud ale i tak chcete aby si kořenový prvek svůj poměr stran zachoval, můžete využít ViewBox jako je uvedeno v ukázce na MSDN:

http://msdn.microsoft.com/en-us/library/...

PS: Abych byl fér, ta filipika proti HTML není zcela na místě. Těžko kritizovat to, že <object> nerespektuje svůj přírodní poměr stran, protože <object> hostuje obsah, kterému HTML ani prohlížeč nerozumí, jen jej umí do jisté míry prezentovat. Proto nemůže znát jeho poměr stran a navíc ne každé UI navržené v XAMLu má jednoznačný poměr stran (leda by se použila vlastnost DesiredSize root Gridu nebo tak něco)... Mít fixní poměr stran jednoduše není vždy žádoucí.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za rady! Moc si toho vážím a zkusím vše zužitkovat. Tak doufám, že vše dopadne dobře. Budu si muset s UI víc pohrát, aby to odpovídalo tomu co očekávám.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback