none
Creer un splash screen dynamic sans xaml ? RRS feed

Réponses

  • Normalement sans un minimum de xaml ce ne sera pas possible.
    mardi 16 août 2011 15:09
  • et vu que tu ne veux vraiment pas de XAML : 


    private Grid Splash;
    
    public MainPage()
    {
          InitializeComponent();
          this.Loaded+=MainPage_Loaded;
          Splash = new Grid();
          var image = new Image() { Source = new BitmapImage(new Uri("/SplashScreenImage.jpg", UriKind.Relative)), Stretch = Stretch.Fill };
          var progress = new ProgressBar() { IsIndeterminate = true, VerticalAlignment = System.Windows.VerticalAlignment.Center, Height = 4 };
          Splash.Children.Add(image);
          Splash.Children.Add(progress);
    
          this.LayoutRoot.Children.Add(Splash);
    }
    
    et plus loin :
    
     void MainPage_Loaded(object sender, RoutedEventArgs e)
     {
    
    
     this.Splash.Visibility=Visibility.Collapsed;
     }
    
    

    (en supposant que ton élément principal s'appelle LayoutRoot)

     


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    mardi 16 août 2011 22:40
    Modérateur

Toutes les réponses

  • Bonjour,

    Oui c'est possible, il suffit juste d'avoir une image nommée SplashScreenImage.jpg (normalement présente lorsque l'on crée un projet de base, la fameuse image avec "l'horloge") et la glisser dans la racine du projet :)

    Quand l'image est présente, elle est automatiquement utilisée pour le splash screen.
    mardi 16 août 2011 14:19
  • non mais je veux un splash screen avec le progressbar

     

    Cordialement,sara.

    mardi 16 août 2011 15:07
  • Normalement sans un minimum de xaml ce ne sera pas possible.
    mardi 16 août 2011 15:09
  • Il faut un peu de xaml, mais c'est super simple Sarita, juste un copier coller et c'est bon :

    Il faut donc dans ta première page rajouter le bloc suivant 

     

     

     

    <Grid x:Name="Splash" >
    
       <Image Source="/SplashScreenImage.jpg" Stretch="Fill"/>
    
    
    
       <StackPanel Margin="0,400,0,0" VerticalAlignment="Top" >
    
        <ProgressBar Height="4" Foreground="#FFFF00D2" IsIndeterminate="True"/>
    
        <TextBlock Text="Chargement en cours..." Foreground="White" TextAlignment="Center"/>
    
       </StackPanel>
    
      </Grid>
    

     

     

     

    Rajoute ca le plus bas possible dans ton code, genre :

     

    <phone:PhoneApplicationPage
     ....
     >
    <Grid>
    <Grid x:Name="Page">
    
    //ici le contenu de ta page
    </Grid>
    
     <Grid x:Name="Splash">
    
      <Image Source="/SplashScreenImage.jpg" Stretch="Fill"/>
      <StackPanel Margin="0,400,0,0" VerticalAlignment="Top" >
      <ProgressBar Height="4" Foreground="#FFFF00D2" IsIndeterminate="True"/>
      <TextBlock Text="Chargement en cours..." Foreground="White" TextAlignment="Center"/>
      </StackPanel>
     </Grid>
    </Grid>
    </phone:PhoneApplicationPage>
    


     

    Il fait le mettre le plus bas possible pour qu'elle soit affiché par dessus les autres éléments.

     

    il suffit enfin de se brancher sur l'évènement Loaded de ta page puis cacher la fausse splash :

     

     

    dans le constructeur de la page
    
    MainPage()
    {
     this.Loaded+=MainPage_Loaded;
    }
    
    et plus loin :
    
     void MainPage_Loaded(object sender, RoutedEventArgs e)
     {
    
    ....
    
      this.Splash.Visibility=Visibility.Collapsed;
      }
    

     

     


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue

    mardi 16 août 2011 22:24
    Modérateur
  • et vu que tu ne veux vraiment pas de XAML : 


    private Grid Splash;
    
    public MainPage()
    {
          InitializeComponent();
          this.Loaded+=MainPage_Loaded;
          Splash = new Grid();
          var image = new Image() { Source = new BitmapImage(new Uri("/SplashScreenImage.jpg", UriKind.Relative)), Stretch = Stretch.Fill };
          var progress = new ProgressBar() { IsIndeterminate = true, VerticalAlignment = System.Windows.VerticalAlignment.Center, Height = 4 };
          Splash.Children.Add(image);
          Splash.Children.Add(progress);
    
          this.LayoutRoot.Children.Add(Splash);
    }
    
    et plus loin :
    
     void MainPage_Loaded(object sender, RoutedEventArgs e)
     {
    
    
     this.Splash.Visibility=Visibility.Collapsed;
     }
    
    

    (en supposant que ton élément principal s'appelle LayoutRoot)

     


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    mardi 16 août 2011 22:40
    Modérateur
  • Bonjour,

     

    Merci RUDY,

    J'ai déjà travailler avec un splash screen mais c'est au niveau d'un projet ou je ne dois pas utiliser  lXAML , je dois creer une class qui puisse me creer le splash screen .

     

    Cordialement,Sara.


    mercredi 17 août 2011 09:58
  • justement, ma dernier proposition n'a pas de xaml :D

     

    Juste pour info car c'est assez étrange, pourquoi ne peux tu pas toucher au xaml ?


    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    mercredi 17 août 2011 10:18
    Modérateur
  • Bonjour,

     

    c'est pour un projet , un framework pour les applications mobile .

     

    Cordialement,Sara.

    mercredi 17 août 2011 11:09