2009-08-07 8 views
0

Comment intégrer le contrôle Silverlight ProgressBar dans un écran d'accueil personnalisé? Je mets ce qui suit dans XAML lâche (simplifié par souci de concision):ProgressBar dans l'écran de démarrage personnalisé Silverlight

<Grid xmlns="http://schemas.microsoft.com/client/2007" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
     <ProgressBar /> 
</Grid> 

Le message d'erreur est le suivant: Erreur: Unhandled Erreur dans Silverlight application code: 2007
Catégorie: ParserError
Message: élément inconnu : Barre de progression.
etc

est pas ProgressBar un contrôle standard défini dans l'espace de noms http://schemas.microsoft.com/winfx/2006/xaml/presentation?

Répondre

0

Je suppose que SL2 ou SL3 depuis la présence d'une barre de progression - il a été ajouté dans SL2.

L'espace de noms/winfx/2006/xaml/presentation n'est pas déclaré - mais certainement dans SL2/3 où il réside. Vous avez utilisé l'alternative http://schemas.microsoft.com/client/2007, il s'agit d'un espace de noms pour SL1.0

Le code donné fonctionnera, mais pour reproduire, je dois avoir l'élément racine comme contrôle utilisateur et les espaces de noms doivent y résider, sinon la balise usercontrol elle-même n'est pas reconnue.

<UserControl x:Class="myApp.scratchpad" 
    xmlns="http://schemas.microsoft.com/client/2007" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300"> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <ProgressBar /> 
    </Grid> 
</UserControl> 

A travaillé correctement dans SL3.

Pouvez-vous publier plus de la page, élément racine, mettre à jour la référence à l'espace de noms SL2/3 et indiquer également quelle version de SL est utilisée?

+0

Mettre dans un UserControl à la racine est la clé pour obtenir que cela fonctionne. J'ai collé ton exemple et ça a bien marché. – t3rse

0

Si cela est pour la propriété SplashScreenSource de l'étiquette d'objet, le XAML doit être Silverlight 1 + JavaScript XAML (non géré) Voici comment vous le faire: (Extrait du Silverlight SDK here)

<Canvas Background="Black" Width="302" Height="52"> 
    <Rectangle Canvas.Left="1" Canvas.Top="1" Width="300" Height="30" Fill="White"/> 
    <Rectangle x:Name="progressBarFill" Canvas.Left="1" Canvas.Top="1" Height="30" Fill="Blue"/> 
</Canvas> 

Et puis utiliser une fonction JS pour mettre à jour les progrès:

function onProgressChanged(sender, eventArgs) 
{ 
    var slPlugin = sender.getHost(); 
    slPlugin.content.findName("progressBarFill").width = eventArgs.progress * 300; 
} 
Questions connexes