Üks sagedane küsimus silverlight.net foorumis on, kuidas panna nupu sisse pilt. Lahendus on nii lihtne ja loogiline, et selle peale hoobilt ei tulegi.
Keskmine XAML kood nupu jaoks näeb Silvelrightis välja nii:
<Button x:Name="nupp" Content="Mina olen nupp" Click="nupp_Click" />
Aga kuidas saada teksti asemele pilt? Selleks tuleb nupu sisu kood enam lahtikirjutada:
<Button Width="100"> <Button.Content> <Image Source="bus.jpg"/> </Button.Content> </Button>
Eelnev kood loob 100 piksli laiuse nupu mille täidab pildiga bus.jpg. Pildile võib loomulikult ka ise täpsed mõõtmed määrata.
Niisamuti võib nupu sisse ka video mängima panna:
<Button Width="100"> <Button.Content> <MediaElement Source="Bear.wmv"/> </Button.Content> </Button>
Aga, kuidas panna nupu sisse nii pilt, kui ka video?
<Button Width="100"> <Button.Content> <MediaElement Source="Bear.wmv"/> <Image Source="bus.jpg"/> </Button.Content> </Button>
Eelnev kood ei vii meid sihile, sest üldjuhul lubavad kasutajaliidese elemendid oma sisuks (Content) vaid üht elementi korraga.
Kõik vajaliku, mis nupu sisuks peavad minema, võime aga koondada Canvas objekti sisse. Nii paistab XAML parserile, et elemendil Button on vaid üks alluv:
<Button Width="100"> <Canvas> <Image Source="bus.jpg"/> <MediaElement Source="Bear.wmv" /> </Canvas> </Button>
Nupp pildi ja videoga näeb välja niisugune:
Veel võimalusi
Niisamuti saab pilte ja videosid panna teistelegi objektidele, mille sisu määratakse atribuudiga Content.
Näiteks Checkbox ning ListboxItem sisaldavad atribuuti Content ning seega võib nende sisuks olla ka kõik muu peale teksti. TextBlock ning TextBox’il on aga vaid atribuut Text, mis nõustub vaid tekstiga.
Video ja pildi võib panna ka Ellipsi või Ristküliku sisse, põhimõte jääb samaks, et sisu tuleb määrata pikemalt lahtikirjutades, mitte kasutades XAMLi kiirteed nagu tavaliselt.
<Ellipse Width="100" Height="100"> <Ellipse.Fill> <ImageBrush ImageSource="bus.jpg" /> </Ellipse.Fill> </Ellipse>
Hea lisalugemine: