Silverlight täitma tervet veebilehte

Mõni postitus tagasi andsin nipi, kuidas Silverlight rakendused täisekraanile saada aga on ju veel üks variant täisekraanist – see, kui rakendus täidab kogu veebilehe.

Luues Silverlight rakenduse näeb Page.xaml fail alguses välja umbes selline:

<UserControl x:Class=”h6bevalge.Tips.Autosize.Page”

    xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 

    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” 

    Width=”400″ Height=”300“>

    <Grid x:Name=”LayoutRoot” Background=”White”>

        <Button x:Name=”button” Content=”Tere!” />

    </Grid>

</UserControl>

Kus Width=”400″ Height=”300″  on rakenduse suurus, et see oleks täpselt nii suur kui on veebilehitseja võib need väärtused täitsa ära kustutada, mis on samaväärne väärtustega Width=”Auto” Height=”Auto”. Iga objekt, mille kõrgus või laius on Auto täidab ära kogu ruumi, mis tal antud on. 
Kasutades Width=”Auto” Height=”Auto” tekib aga rakenduses Expression Blend veidi ebamugavusi – esialgne kujundus läheb täiesti paigast ära, sest objektid ei asu veebilehitsejas  ja seega neil ei ole mingit ruumi antud ning kõike näidatakse 0×0 suurusega… et seda vältida võib paika seada suurused disainiajaks - d:DesignWidth=”640″ d:DesignHeight=”480″ nii on paigutus ka Blendis paigas.

Tip #2: Silverlight täisekraanile

Silverlight template rakendused, mille loovad Expression Blend ja Visual Studio, võtavad vaikimisi ekraanil 640 x 400 pikslit. Selleks, et rakendus võtaks veebilehel ruumi nii palju kui võtta on tuleb teha järgnevat:

Page.xaml failis tuleks igasuguste paigutushaldurite (näiteks UserControl ja Grid) kõrguseks ja laiuseks panna Auto – see tähendab, et nii palju kui sisu ruumi võtab.

Et Silverlight päris täisekraanile saada tuleb kirjutada järgnevalt:

1:  Application.Current.Host.Content.IsFullScreen = true;

Kusjuures turvalisuse kaalutlustel ei saa seda teha rakenduse laadides, sest muidu teeks keegi windowsi klooni ja varastaks kõigi paroolid ära :)

Täisekraaniga on seotud ka üks sündmus: FullScreenChanged, seda võib kasutada näiteks täisekraanile viiva nupu näitamiseks ja peitmiseks:

Lisame sündmusekuulari:

1:  Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_FullScreenChanged);

Sündmusehaldur:

1:  void Content_FullScreenChanged(object sender, EventArgs e)
2:  {
3:      if (Application.Current.Host.Content.IsFullScreen)
4:      {
5:          fullscreenButton.Visibility = Visibility.Collapsed;
6:      }
7:      else {
8:          fullScreenButton.Visibility = Visibility.Visible;
9:      }
10:  }