在 WPF 应用程序中,我在 Grid 中有一堆 CustomControls。为了处理鼠标单击它们,我使用了MouseLeftButtonDown
Grid 的事件,并在事件处理程序中检查单击了哪个 CustomControl:
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement feSourceComm = e.Source as FrameworkElement;
MyCustomControl SCurrentComm = new MyCustomControl();
try
{
SCurrentComm = (MyCustomControl)feSourceComm;
}
catch (Exception)
{
...
当我将所有 CustomControls 放在 UserControl 中,然后放在 Grid 中时,问题就出现了。在这种情况下,方法不起作用。
我检查了每种情况下的点击源类型,e.Source.GetType().ToString();
并得到以下结果:
当没有问题时(如果我将CustomControls放在没有UserControl的Grid中)
MyProjectNamespace.MyCustomControl
当我将 CustomControls 放入 UserControl 然后放入 Grid
MyProjectNamespace.UserControls.MyUserControlName
当我将 CustomControls 放入 UserControl 然后放入 Grid 并通过XamlReader.Load
System.Windows.Controls.UserControl
所以,我的问题是:
如何使 CustomControls 像e.Source
在 UserControl 中一样可见?