Domanda

Come si incorpora il controllo Silverlight ProgressBar in una schermata iniziale personalizzata?Ho inserito quanto segue in xaml sciolto (semplificato per brevità):

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

Il messaggio di errore è il seguente:Errore:Errore non gestito nel codice dell'applicazione Silverlight:2007
Categoria:ParserError
Messaggio:Elemento sconosciuto:Barra di avanzamento.
eccetera

ProgressBar non è un controllo standard definito nel file http://schemas.microsoft.com/winfx/2006/xaml/presentation spazio dei nomi?

È stato utile?

Soluzione

Presumo SL2 o SL3 poiché è presente una barra di avanzamento: è stata aggiunta in SL2.

Lo spazio dei nomi /winfx/2006/xaml/presentation non è dichiarato, ma certamente in SL2/3 è lì che risiede.Hai utilizzato l'alternativa http://schemas.microsoft.com/client/2007, questo è uno spazio dei nomi legacy per SL1.0

Il codice fornito funzionerà, ma per riprodurlo devo avere l'elemento root come controllo utente e gli spazi dei nomi devono risiedere lì, altrimenti il ​​tag usercontrol stesso non viene riconosciuto.

<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>

Ha funzionato bene in SL3.

Puoi pubblicare più parti della pagina, dell'elemento root, aggiornare il riferimento allo spazio dei nomi SL2/3 e anche dire quale versione di SL viene utilizzata?

Altri suggerimenti

Se questo è per la proprietà SplashScreenSource del tag object, quindi il XAML deve essere Silverlight 1 + JavaScript (non gestiti XAML) Ecco come si dovrebbe fare questo: (Tratto da Silverlight SDK qui )

<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>

E poi utilizzare una funzione JS per aggiornare lo stato di avanzamento:

function onProgressChanged(sender, eventArgs)
{
    var slPlugin = sender.getHost();
    slPlugin.content.findName("progressBarFill").width = eventArgs.progress * 300;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top