首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

WPF,这种点击事件怎么获取事件源

2013-12-04 
WPF,这种点击事件如何获取事件源一个自定义的控件CustomControl1,样式如下:Grid元素1元素1.Template

WPF,这种点击事件如何获取事件源
一个自定义的控件CustomControl1,样式如下:


<Grid>
   <元素1>
     <元素1.Template>
       .....
     </元素1.Template>
   </元素1>
   <元素2>
     <元素2.Template>
       .....
     </元素2.Template>
   </元素2>
   <元素3>
     <元素3.Template>
       .....
     </元素3.Template>
   </元素3>
   .....
   .....
</Grid>


CustomControl1模板内部的元素1、元素2、元素3.....都要定义MouseDown事件,由于元素太多,我想在CustomControl1定义一个总的MouseDown事件,可是MouseDown事件的Sender是CustomControl1自身,Source也是CustomControl1自身,OriginalSource则是那些元素控件模板里面的更细的元素。
怎么样才能获取到元素1、元素2、元素3......呢?
[解决办法]

//自定义一个事件
public partial class UserControl1 : UserControl
{
    public event EventHandler ctrlMouseDown;

    public UserControl1()
    {
        InitializeComponent();

        foreach (UIElement item in grd.Children)
        {
            item.MouseDown += item_MouseDown;
        }
    }

    void item_MouseDown(object sender, MouseButtonEventArgs e)
    {
        ctrlMouseDown(sender, e);
    }
}

[解决办法]
使用HitTest试试吧,通过总控件的鼠标事件,看看命中了那些控件
http://msdn.microsoft.com/en-us/library/ms608753(v=vs.110).aspx
[解决办法]
得到的sender对应的控件是对的;
5楼提供的连接我看了,很牛,已测
List<DependencyObject> hitResultsList

热点排行