2017-04-07 69 views
0

我有一个简单的按钮,其中contentcontrol标签内的两个textblock元素,如下。问题是textblock控件的mouseup事件没有被调用。相反,每次单击文本块控件时,都会调用button的onclick even1t。WPF textblock事件内部控件的buttoncontrol没有被调用

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

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

<ContentControl> 

</button> 

如果我放在<Button>标签外ContentControl中的标签,然后将事件然而工作。

+0

+0

貌似事件已经由按钮处理。试着在button_Click事件处理程序中设置e.Handled = false。 –

+0

tx lukas koten ..我试过但没有工作......我甚至试图在文本块上设置Z-index标签,认为它可能会将它们放在消息接收管道中的较高位置,并可能引发它们的事件,但也没有没有工作...还有其他建议吗? –

回答

-1

处理好MouseLeftButton 事件:

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

为什么downvote ...?尝试代码:)按照上述注释中的建议将button_Click中的Handled属性设置为false是毫无意义的。 – mm8

0

这是不是就可以启动的MouseLeftButtonUp事件处理程序为您的TextBlocks的方式,但它是你如何对你的TextBlocks处理的MouseLeftButtonUp事件的方式:

<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 ...一吨谢谢Rekshino :-)。 ......它做了这项工作......今天学到了新东西 –

+0

然后你可以接受这个答案。 ;) – Rekshino