by Corrado Cavalli via Corrado's BLogs on 3/7/2010 7:01:22 AM
Sto lavorando su un applicazione Silverlight che, tra le varie funzionalità, deve eseguire il play di streams in formato .wma e per questo requisito la scelta cade automaticamente sulla classe MediaElement. Convinto della banalità della cosa ho scritto qualcosa tipo:
MediaElement me = new MediaElement();
me.Source = new Uri("http://thesite.com/stream.wma", UriKind.Absolute);
me.Play();
per scoprire che non funziona, ho quindi rimediato usando:
WebClient wc = new WebClient();
wc.OpenReadCompleted += (s, arg) =>
{
me.SetSource(arg.Result);
};
wc.OpenReadAsync(new Uri("http://www.thesite.com/stream.wma", UriKind.Absolute));
Il problema vero è nato quando ho cercato di regolare il volume, semplicemente agganciando uno slider alla proprietà Volume di MediaElement ovvero qualcosa tipo:
private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
me.Volume = slider1.Value;
}
e qui non c’è stato verso di farlo funzionare.
Dopo svariate prove e successiva conferma da parte del team di Silverlight ho scoperto l’inghippo e quindi anche il motivo percui l’assegnazione dell’Uri allo stream non funzionava: Ogni MediaElement deve far parte di un Visual Tree. Aggiungendo il MediaElement al visual tree oppure semplicemente definendo lo stesso direttamente via XAML sembra risolvere tutti i problemi, certo per questa particolare necessità (in questo caso non ho nulla da visualizzare) mi sembra di essere tornato ai tempi di VB6 dove le form erano piene di controlli invisibili a run-time, ma è pur vero che normalmente un MediaElement è spesso legato ad un video e quindi la presenza nella UI è più che normale.
Original Post: MediaElement and Visual Tree
The content of the postings is owned by the respective author. Silverlight Feeds is not responsible for the contents of the postings. This site is automatically generated and cannot be reviewed for abusive content. If you find abusive content on Silverlight Feeds, please contact us. Designated trademarks and brands are the property of their respective owners. All rights reserved.