2010-04-27 2 views
2

Je crée un UserControl Silverlight personnalisé qui doit écouter les événements en utilisant Preview/Tunneling, mais pour une raison quelconque, le compilateur me dit qu'il n'est pas reconnu ou accessible.Pourquoi mes UIElements Silverlight n'ont-elles PAS d'événements OnPreview?

Par exemple, je peux ajouter un gestionnaire d'événements à MouseLeftButtonDown, mais pas PreviewMouseLeftButtonDown. Cela n'a aucun sens car selon Microsoft (http://msdn.microsoft.com/en-us/library/system.windows.uielement_members(v=VS.100).aspx), tous les événements UIElemen doivent avoir des événements Preview attachés.

Des idées sur les raisons pour lesquelles cela se produit? J'utilise Visual Studio 2010 Trial, Blend 4 RC et .Net 4, si cela fait une différence.

Répondre

3

Silverlight ne prend pas en charge les événements de prévisualisation ni ne prend en charge les événements routés (bulles/tunnels), à l'exception de quelques événements principaux.

Si vous essayez de créer un contrôle qui fonctionne à la fois avec WPF et Silverlight, vous devrez adopter une approche différente. En fonction de ce que vous essayez de faire, vous pourrez peut-être accomplir ce que vous voulez en chargeant un gestionnaire dans le code et en spécifiant que vous voulez aussi gérer les événements.

// the last parameter indicates we want to receive events that 
// were marked as e.Handled = true by other listeners 
// this type of event handler can only be done in code 
myUserControl.AddHandler(
    UIElement.MouseLeftButtonDownEvent, 
    OnMouseLeftButtonDown, 
    true 
); 
+0

Parfait! Exactement ce dont j'avais besoin, merci d'avoir fait un effort supplémentaire et de m'aider à résoudre mon problème. –

1

Vous consultez l'aide de WPF, pas Silverlight. Silverlight est (pour la plupart) un sous-ensemble de WPF, et une grande partie de la fonctionnalité est manquante. Le Silverlight UIElement help ne montre pas ces événements, car ils n'existent pas dans Silverlight.

+0

Intéressant, merci! –

Questions connexes