2017-04-07 8 views
0

J'ai un bouton simple avec deux éléments textblock dans la balise contentcontrol du bouton comme ci-dessous. Le problème est que l'événement mouseup du contrôle textblock n'est pas appelé. Au lieu de cela, le bouton onclick even1t du bouton est appelé chaque fois que je clique sur les contrôles textblock.Événements de bloc de texte WPF à l'intérieur du contrôle de contenu d'un bouton non appelé

<Button> 
<ContentControl> 
<Textblock x:name="txt1" Text="Tes1-1" MouseLeftButtonUp="txt1_mouseleftbuttonup"/> 

<Textblock x:name="txt2" Text="Tes1-1" MouseLeftButtonUp="txt2_mouseleftbuttonup"/> 

<ContentControl> 

</button> 

Si je place la balise ContentControl dehors de la balise <Button>, puis les événements fonctionnent cependant.

+0

+0

On dirait que l'événement est déjà géré par le bouton. Essayez simplement de définir e.Handled = false dans le gestionnaire d'événements button_Click. –

+0

tx lukas koten..J'ai essayé mais ça ne marchait pas ... J'ai même essayé de positionner le Z-index propety sur des blocs de texte en pensant qu'il pourrait les placer plus haut dans le tube de réception de message et déclencher leurs événements ne fonctionne pas ... une autre suggestion? –

Répondre

-1

Manipulez le MouseLeftButton vers le bas événement:

<Button Click="Button_Click_1"> 
    <ContentControl> 
     <TextBlock x:Name="txt11" Text="test" MouseLeftButtonDown="txt1_mouseleftButtonup"/> 
    </ContentControl> 
</Button> 
+1

Pourquoi le downvote ...? Essayez le code :) Définir la propriété Handled à false dans button_Click comme suggéré dans le commentaire ci-dessus n'a aucun sens du tout. – mm8

0

Il n'est pas la façon dont vous pouvez commencer gestionnaire d'événements MouseLeftButtonUp pour vos TextBlocks, mais il est la manière dont vous pouvez gérer un événement MouseLeftButtonUp sur votre TextBlocks:

<Button Mouse.PreviewMouseUp="Button_MouseLeftButtonUp"> 
    <ContentControl> 
     <TextBlock Text="TestText" x:Name="txt1"/> 
    </ContentControl> 
</Button> 

private void Button_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
{ 
    var btn = sender as Button; if (btn == null) return; 

    if (btn.InputHitTest(e.GetPosition(btn)) is TextBlock) 
    { 
     ;//TextBlock MouseUp handler 
    } 
} 
+0

Yessss ... une tonne de remerciements Rekshino :-). ... il a fait le travail ... a appris une nouvelle chose aujourd'hui –

+0

Ensuite, vous pouvez accepter les answear. ;) – Rekshino