WPF Frameworkelement鼠标单击问题
-
24-10-2019 - |
题
在WPF应用程序中,我在网格中有很多量身定制。为了处理鼠标点击它们,我使用 MouseLeftButtonDown
网格的事件和事件处理程序,我检查了哪些contrycontrol被单击:
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement feSourceComm = e.Source as FrameworkElement;
MyCustomControl SCurrentComm = new MyCustomControl();
try
{
SCurrentComm = (MyCustomControl)feSourceComm;
}
catch (Exception)
{
...
当我将所有定制控制放在UserControl中,然后在网格中放置时,出现了问题。在这种情况下,方法无效。
我检查了每种情况下的点击源类型 e.Source.GetType().ToString();
并获得以下结果:
当没有问题时(如果我在没有USERCONTROL的情况下将定制控制放在网格中)
MyProjectNamespace.MyCustomControl
当我将定制控制放入USERCONTROL,然后将其放在网格中
MyProjectNamespace.UserControls.MyUserControlName
当我将定制控制放入USERCONTROL,然后将其放在网格中,然后通过外部文件加载USERCONTROL XamlReader.Load
System.Windows.Controls.UserControl
所以,我的问题:
如何使惯例可归功于 e.Source
当它们在Usercontrol内部时?
解决方案
e.OriginalSource
会告诉您点击发生的哪个特定元素。如果不是您的惯例,请沿着父母的链条走 OriginalSource
直到找到您的惯例
不隶属于 StackOverflow