.net 如何:使用TargetType在WPF中单击?
我在.net 如何:使用TargetType在WPF中单击?,.net,wpf,wpf-controls,.net,Wpf,Wpf Controls,我在MyUserControl(自定义用户控件)中添加了一些MyLabels(自定义WPF控件) 我需要将标签上的点击重定向到一个函数(比如,OnMyLabelClick) 我是否可以将样式或其他内容与TargetType='MyLabel'关联,以便自动将我的单击从每个MyLabel重定向到该函数?您可以使用附加的事件进行此操作 考虑附加事件的一个简单示例: <StackPanel Label.MouseDown ="Label_MouseDown"> <MyLabe
MyUserControl
(自定义用户控件)中添加了一些MyLabel
s(自定义WPF控件)
我需要将标签上的点击重定向到一个函数(比如,OnMyLabelClick
)
我是否可以将样式或其他内容与
TargetType='MyLabel'
关联,以便自动将我的单击从每个MyLabel重定向到该函数?您可以使用附加的事件进行此操作
考虑附加事件的一个简单示例:
<StackPanel Label.MouseDown ="Label_MouseDown">
<MyLabel>ABC</MyLabel>
<MyLabel>DEF</MyLabel>
<MyLabel>FGH</MyLabel>
</StackPanel>
基础知识
DEF
FGH
由于路由事件在WPF中的工作方式,您可以为父容器(可能是您的用户控件)上的所有标签注册MouseDown事件
如果您的MyLabel扩展了标签,则上述示例将起作用
<UserControl.Resources>
<Style TargetType="{x:Type my:MyLabel}">
<EventSetter Event="MouseDoubleClick"
Handler="MyLabel_MouseDoubleClick" />
</Style>
我尝试了
这篇文章,但是从事件中得到的任何反馈……嗨。首先,请注意,在我的示例中,使用的附加事件是MouseDown,不是自定义事件,也不是click事件。我不确定你是如何实现点击标签的,你可以通过多种方式来实现。单击是一个路由事件,其策略是直接的,因此它不会在元素树中冒泡,请参阅。鼠标下移是一个路由事件,因此它将在元素树中冒泡,这就是上面的示例工作的原因。我不需要鼠标下移,我需要鼠标下移。。。最后,我需要一个通用的解决方案,而不仅仅是一个适用于MouseDown的解决方案。。。我测试了样式解决方案,它适用于任何事件。。。