2012-03-16 61 views
0

我已經在MyUserControl(自定義用戶控件)中添加了一些MyLabel s(自定義WPF控件)。如何使用TargetType在WPF中單擊?

我需要將該標籤上的點擊重定向到一個函數(例如,OnMyLabelClick)。

我可以將樣式或其他東西與TargetType='MyLabel'關聯以便將每次myLabel的點擊自動重定向到該功能嗎?

回答

0
<UserControl.Resources> 
    <Style TargetType="{x:Type my:MyLabel}"> 
     <EventSetter Event="MouseDoubleClick" 
        Handler="MyLabel_MouseDoubleClick" /> 
    </Style> 
0

您可以使用附加事件。

考慮連事件的一個簡單的例子:

<StackPanel Label.MouseDown ="Label_MouseDown"> 
    <MyLabel>ABC</MyLabel> 
    <MyLabel>DEF</MyLabel> 
    <MyLabel>FGH</MyLabel> 
</StackPanel> 

,因爲這樣路由事件在WPF工作,你可以爲一個父容器上的所有標籤MouseDown事件寄存器(可能是你的用戶控件)。

如果MyLabel擴展標籤上面的例子將工作

+0

我想'<電網我:MyLabel.MouseDoubleClick =「MyLabel_MouseDoubleClick」>'這個編制,但是從事件的任何反饋... – serhio 2012-03-16 10:21:58

+0

喜。首先,請注意,在我的例子中,使用的附加事件是MouseDown,而不是自定義事件,而不是點擊事件。我不確定您是如何實施點擊您的標籤的,您可以通過多種方式完成此操作。 Click是一個路由事件,其策略是直接的,因此它不會在元素樹中冒泡,請參閱[路由策略](http://msdn.microsoft.com/zh-cn/library/ms742806.aspx)。 Mouse Down是一個路由事件,所以它會在元素樹中冒泡,這就是上述例子的原因。 – 2012-03-16 11:54:07

+0

我不需要MouseDown,我需要MouseDoubleClick ...最後,我需要一個通用的解決方案,不只是一個適用於MouseDown的解決方案...我測試了Style解決方案,它適用於任何事件... – serhio 2012-03-16 12:52:49

相關問題