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í.
|