2017-04-07 32 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