Usare l'Oggetto WebBrowser Di Windows Phone Per Visualizzare Un Contenuto Statico

Author: ollie10 6/12/2010 7:22 PM

web browser windows phoneTramite l'oggetto WebBrowser di windows phone è possivile visualizzare all'interno delle nostre applicazioni pagine web sfruttando il motore di internet explorer integrato nel sistema operativo. Un altro utile utilizzo però può essere la visualizzazione di contenuti statici o dinamici recuperati da fonti di dati diverse, la vera potenza di questo sistema è quella che possiamo formattare i nostri contenuti in html con tutto quello che ne consegue.

Per fare questo esiste un metodo molto semplice, basta creare un file col nostro contenuto da visualizzare e salvarlo nell'Isolated Storage e all'onload del WebBrowser fargli caricare la uri del nostro file.

Qui di seguito trovate un semplice esempio di funzionamento, il file html viene salvato nello storage tramite un BinaryWriter e letto passando come Uri al browser il nome del file nello storage e il parametro Relative

Pagina xaml

<Grid x:Name="LayoutRoot" Background="{StaticResource PhoneBackgroundBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <!--TitleGrid is the name of the application and page title-->
        <Grid x:Name="TitleGrid" Grid.Row="0">
            <TextBlock Text="Ollie10.it" x:Name="textBlockPageTitle" Style="{StaticResource PhoneTextPageTitle1Style}"/>
            <TextBlock Text="Web Browser" x:Name="textBlockListTitle" Style="{StaticResource PhoneTextPageTitle2Style}"/>
        </Grid>

        <!--ContentGrid is empty. Place new content here-->
        <Grid x:Name="ContentGrid" Grid.Row="1">
            <browser:WebBrowser x:Name="PageBrowser" Width="400" Height="600" VerticalAlignment="Center" HorizontalAlignment="Center" />
        </Grid>
    </Grid>

Codice C#

    public partial class MainPage : PhoneApplicationPage
    {
        private const string htmlFile = "file.html";

        public MainPage()
        {
            InitializeComponent();
            SupportedOrientations = SupportedPageOrientation.Portrait | SupportedPageOrientation.Landscape;

            
            string html = @"<body style=""font-family:'Segoe WP';font-size:60px"">
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus erat mi, dignissim eu tristique sed, mollis et diam. Nulla facilisi. Nam in mauris arcu. Integer tellus lorem, dignissim at pulvinar vel, mollis ac dui. Vivamus et cursus lorem. Curabitur vel augue tortor, id interdum ante. Morbi non tellus lorem, sit amet cursus mi. Phasellus blandit aliquet viverra. Sed et nulla enim, non eleifend leo. Integer ullamcorper fermentum semper. Cras rhoncus, est a mollis elementum, nisi dui tempus leo, in bibendum urna orci at magna. Nullam at metus sapien, ut eleifend tellus. Donec sodales ligula vitae velit rhoncus vitae commodo justo rhoncus. Nunc non dolor augue, sed adipiscing lectus. Aliquam convallis accumsan ligula ut lobortis. Pellentesque egestas cursus augue, vel rutrum quam ullamcorper id. Maecenas ultrices ipsum sed nisl placerat ut consequat libero luctus. Mauris in sapien nunc, sed sollicitudin purus. Curabitur eu quam eu nibh cursus sagittis. In consectetur adipiscing tellus, sed accumsan est scelerisque id.</p>
            <p>Qui un altro paragrafo con un link
            <a href=""http://www.ollie10.it"">ollie10.it</a> e 
            <b>un testo in grassetto, <u>sottolineato</u> e sotto una lista</b></p>
            <ul><li>primo elemento</li><li>secondo elemento</li></ul>
            </body>";

            // SALVO IL FILE NELL'ISOLATED STORAGE
            SaveToIsoStore(htmlFile, new System.Text.UTF8Encoding().GetBytes(html));

            // INDICO ALL'OGGETTO WEB BROWSER IL FILE DA LEGGERE
            PageBrowser.Loaded += WebBrowser_OnLoaded;
        }


        private void WebBrowser_OnLoaded(object sender, RoutedEventArgs e)
        {
            PageBrowser.Navigate(new Uri(htmlFile, UriKind.Relative));
        }

        private void SaveToIsoStore(string fileName, byte[] data)
        {
            string strBaseDir = string.Empty;
            string delimStr = "/";
            char[] delimiter = delimStr.ToCharArray();
            string[] dirsPath = fileName.Split(delimiter);

            //RECUPERO L'ISOLATED STORAGE
            IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();

            //RICREO LA STRUTTURA DELLE CARTELLE
            for (int i = 0; i < dirsPath.Length - 1; i++)
            {
                strBaseDir = System.IO.Path.Combine(strBaseDir, dirsPath[i]);
                isoStore.CreateDirectory(strBaseDir);
            }

            //RIMUOVO IL FILE SE ESISTE GIA'
            if (isoStore.FileExists(fileName))
                isoStore.DeleteFile(fileName);

            //SCRIVO DENTRO AL FILE
            using (BinaryWriter bw = new BinaryWriter(isoStore.CreateFile(fileName)))
            {
                bw.Write(data);
                bw.Close();
            }
        }
    }

Tags: ,
Categories: Windows Phone
Permalink | Comments (3)
  • condividi Usare l'Oggetto WebBrowser Di Windows Phone Per Visualizzare Un Contenuto Statico su facebook
  • condividi Usare l'Oggetto WebBrowser Di Windows Phone Per Visualizzare Un Contenuto Statico su twitter
  • condividi Usare l'Oggetto WebBrowser Di Windows Phone Per Visualizzare Un Contenuto Statico su stumbleupon
  • condividi Usare l'Oggetto WebBrowser Di Windows Phone Per Visualizzare Un Contenuto Statico su digg
  • condividi Usare l'Oggetto WebBrowser Di Windows Phone Per Visualizzare Un Contenuto Statico su delicious
  • condividi Usare l'Oggetto WebBrowser Di Windows Phone Per Visualizzare Un Contenuto Statico su reddit
  • condividi Usare l'Oggetto WebBrowser Di Windows Phone Per Visualizzare Un Contenuto Statico su google
  • condividi Usare l'Oggetto WebBrowser Di Windows Phone Per Visualizzare Un Contenuto Statico su netvibes
  • aggiungi il feed di Usare l'Oggetto WebBrowser Di Windows Phone Per Visualizzare Un Contenuto Statico


Comments


Italy Lorenzo Barbieri(website)
6/21/2010 5:31 PM
WebBrowser1.NavigateToString? Smile


Italy ollie10(website)
6/29/2010 10:07 AM
Hai ragione Lorenzo, non avevo trovato documentazione riguardo al NavigateToString che è sicuramente il metodo migliore per passare velocemente del contenuto html


United States Dustin(website)
8/12/2010 8:08 AM
Excellent job man!

Add comment




  Country flag

biuquote
  • Comment
  • Preview
Loading