Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何:使用TargetType在WPF中单击?_.net_Wpf_Wpf Controls - Fatal编程技术网

.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的解决方案。。。我测试了样式解决方案,它适用于任何事件。。。