2014-02-27 16 views
1

可以說我有一個xaml文件,一個窗口,爲什麼不。在這個xaml我有一個網格與多個標籤,文本框,組合框,列表...你看到的模式。在某個點(其中X == true)我希望能夠捕獲在網格及其中的所有內容中單擊一次。WPF捕獲點擊一個網格和他所有的兒童標籤,文本框等

我希望能夠繼續做點擊操作,因此在網格中填滿的Rect不是我正在尋找的答案。點擊的行爲是將X置回假。沒什麼。

是否有一種簡單的方法來管理網格上的點擊和其中的一切?

在此先感謝

回答

5

您只需要使用所有控件通用的事件。這種情況下最好的一種可能是UIElement.PreviewMouseDown event。試試這個:

<StackPanel UIElement.PreviewMouseDown="StackPanel_PreviewMouseDown"> 
    <Label Content="I'm a Label" /> 
    <Button Content="I'm a Button" /> 
    <CheckBox Content="I'm a CheckBox" /> 
</StackPanel> 

您需要使用Preview...事件之一,這樣就可以抓住它的Button小號消費之前......正是由於這個原因,UIElement.MouseDown事件不會與Button的工作。但是,例如,您可以使用更多的Preview...方法,例如UIElement.PreviewLeftMouseButtonDown事件。

+0

這是完美的。甚至是指令性的!你真了不起。 :d –

0

你可以給你的示例代碼?

從我的理解,你可以使用這個,它會捕獲你所有的點擊內部網格。

的.xaml

<Grid MouseDown="Grid_MouseDown"> 
<Label MouseDown="Grid_MouseDown" /> 
<Button MouseDown="Grid_MouseDown"/> 
<Button MouseDown="Grid_MouseDown"/> 
</Grid> 

.xaml.cs

private Grid_MouseDown(object sender,MouseButtonEventArgs e) 
{ 
    if(X==true) 
    { 
     //doSomething 
    } 
    else 
    { 
    //do SomethingElse 
    } 
} 

編輯:這個怎麼樣?

+0

它確實捕獲網格內的所有點擊,但不包含標籤,按鈕等的點擊,這些不能滿足我的需求。 –

+1

只需添加一個背景:' xmedeko