2009-11-23 7 views
0

Si j'ai une classe personnalisée appelée VideoMedia (qui contient un Uri standard pour le chemin vidéo) et j'ai DataTemplate que j'utiliser pour créer un lecteur vidéo comme contrôles.DataTemplates WPF et classes personnalisées pour gérer les événements

<DataTemplate DataType="{x:Type v:VideoMedia}"> 
    <MyLib:VideoPlayer/> 
</DataTemplate> 

(La classe VideoPlayer étend UserControl et contrôle simplement la lecture d'un fichier vidéo)

Comment puis-je ajouter un gestionnaire d'événements dans la classe VideoMedia, de sorte qu'il peut contenir une sorte de TimeStarted propriété? J'en ai besoin à l'exécution pour savoir si la vidéo est en cours d'exécution.

Je stocke une collection IDictionary<int, VideoMedia> que je répète toutes les 2 secondes pour indiquer si les vidéos sont en cours de lecture. Y a-t-il une meilleure façon de le faire?

Répondre

1

Si votre contrôle VideoPlayer est construit correctement avec une propriété de dépendance IsPlaying. Il suffit de faire une liaison à VideoMedia.IsPlaying au VideoPlayer.IsPlaying et vous êtes prêt à partir.

<MyLib:VideoPlayer IsPlayingDP="{Binding IsPlaying}" ... /> 
+0

vous voulez dire utiliser la liaison de modèle? – Mark

+0

Juste mis à jour le poste, IsPlayingDP est votre propriété usercontrol et IsPlaying est votre propriété Viewmodel. –

+0

J'obtiens: Impossible de récupérer la valeur en utilisant la liaison et aucune valeur de repli valide n'existe; en utilisant par défaut à la place. BindingExpression: Path = IsPlaying; DataItem = 'VideoMedia' (HashCode = 51593576); l'élément cible est 'VideoPlayer' (Name = 'UserControl'); La propriété target est 'IsPlaying' (type 'Boolean') – Mark

Questions connexes