2009-06-22 13 views
0

J'ai un UserControl, par défaut généré par VS, seul TextBlock est ajouté:WPF manutention RoutedEvent de UserControl

<UserControl x:Class="MyNameSpace.Presentation.MyControl" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
x:Name="myControl"> 
    <Grid> 
     <TextBlock x:Name="SomeTextBox" Text="SomeText"></TextBlock> 
    </Grid> 

Maintenant, je mets plusieurs cas de ce contrôle dans WrapPanel de contrôle parent dynamique de le code derrière. Je veux gérer tous les clics du bouton gauche de la souris depuis les instances de MyControl. J'ai le code suivant:

<UserControl x:Class="Minimo.Presentation.FirstParent" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:Presentation="clr-namespace:Minimo.Presentation" 
Height="300" Width="300"> 
<WrapPanel Name="wrapPanelOfMyControls" MyControl.MouseLeftButtonDown="WrapPanel1_OnMouseLeftButtonDown"> 
</WrapPanel> 

Dans le gestionnaire d'événements, je fais une action, et il fonctionne. Cependant, j'obtiens l'erreur suivante lors de l'édition du fichier XAML: La propriété attachable 'MouseLeftButtonDown' n'a pas été trouvée dans le type 'MyControl'. Comment régler ceci?

Répondre

2

Ceci est juste un bug avec le compilateur/concepteur XAML et peut être ignoré en toute sécurité. Cependant, vous pourriez être en mesure de « fixer » en spécifiant un type qu'il connaît plus intimement de:

UIElement.MouseLeftButtonDown="WrapPanel1_OnMouseLeftButtonDown" 
+0

Merci, qui a résolu le problème. D'un autre côté, cela ne fait-il pas du gestionnaire de panneau de retour à la ligne de gérer tous les événements de clic de souris des contrôles enfants, même pas ceux des instances de MyControl? (Alors que vous ne tapez explicitement MyControl.MouseLeftButtonDown qu'à partir de ce contrôle) –

+0

Les deux formulaires font exactement la même chose - ils font simplement référence au même événement routé de différentes manières. Et comme il s'agit d'un événement routé, le panneau aura toujours la possibilité de le gérer si un enfant n'a pas déjà marqué l'événement PreviewMouseLeftButtonDown comme étant géré. –

+0

Ce bug existe toujours, plus de 5 ans plus tard! – Ashe