Per alcune tipologie di applicazioni, la possibilità di poter essere eseguite in modalità fullscreen è molto importante, pensiamo ad esempio ad player di video (magari sfruttando il support al VC-1, la codifica per l’alta definizione) oppure una galleria fotografica.
In questo post vedremo come realizzare un pulsante che porti la nostra applicazione in modalità fullscreen.
L’oggetto a cui faremo riferimento è Application.Current.Host.Content
Questo oggetto ha due proprietà che possono essere lette in qualsiasi momento e sono
- ActualWidth
è di tipo double (sola lettura) e restituisce l’attuale larghezza in pixel della nostra applicazione Silverlight - ActualHeight
è di tipo double (sola lettura) e restituisce l’attuale altezza in pixel della nostra applicazione Silverlight
La terza proprietà rilevante per il nostro scopo è la IsFullScreen, quest’ultima è di tipo bool e può essere letta in qualsiasi momento ma può essere impostata soltanto dentro un evento di tipo:
- MouseLeftButtonDown
- MouseLeftButtonUp
- KeyDown
- KeyUp
Quindi se noi dentro il nostro metodo public Page() impostassimo la proprietà
Application.Current.Host.Content.IsFullScreen = true;
per far si che la nostra applicazione vada subito in modalità fullscreen all’avvio, ebbene non succederebbe nulla.
Questa limitazione è stata voluta da Microsoft per impedire che applicazioni Silverlight possano passare alla modalità fullscreen senza nessun intervento da parte dell’utente finale.
Per verificare il funzionamento di quanto descritto creiamo un progetto di test con VisualStudio2008, il file Page.xaml sarà il seguente:
<UserControl x:Class="FullScreenTestSL.Page" xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="Auto" Height="Auto"> <Grid x:Name="LayoutRoot" Background="White"> <StackPanel> <TextBox x:Name="txtb1" Width="300" Height="30" Text=""></TextBox> <Button x:Name="btn1" Width="50" Height="30" MouseLeftButtonUp="btn1_MouseLeftButtonUp"></Button> </StackPanel> </Grid> </UserControl> |
Mentre il file Page.xaml.cs sarà:
using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace FullScreenTestSL { public partial class Page : UserControl { public Page() { InitializeComponent(); Application.Current.Host.Content.FullScreenChanged += new EventHandler(Content_FullScreenChanged); layoutUpdated(Application.Current.Host.Content.ActualHeight, Application.Current.Host.Content.ActualWidth); } void Content_FullScreenChanged(object sender, EventArgs e) { layoutUpdated(Application.Current.Host.Content.ActualHeight, Application.Current.Host.Content.ActualWidth); } private void btn1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen; } private void layoutUpdated(double height, double widht) { txtb1.Text = "Cur Height:" + height.ToString() + " Widht: " + widht.ToString(); } } } |
Abbiamo associato all’evento MouseLeftButtonUp (che è uno degli eventi che sono abilitati a gestire la modalità fullscreen) il codice che modifica la proprietà IsFullScreen, in questo caso viene dato un effetto switch fullscreen/normalscreen alla pressione del pulsante.
1 Comment
A capo e separazione tra i paragrafi automatici, l’indirizzo e-mail non è mai mostrato, codice HTML consentito: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
You must be logged in to post a comment.







P.S.
Comment by Mino on giugno 3rd, 2008 @ 16:36Attualmente il Browser Mozilla Firefox 2.x non permette al plugin Silverlight 2.0 Beta di passare alla modalità fullscreen, effettuate quindi i vostri test su un browser come Explorer.