有时,利用程序生成的WPF的UI控件对象,其事件无法冒泡到其背后的父/祖父控件上。比如以下代码,在代码中生成了一系列的Reatangle对象,但是rect对象的事件无法冒泡到myGridControl的上级控件上。
public void UpdateRects(IEnumerable<Point> points)
{ foreach(var p in points)
{
System.Windows.Controls.Rectange rect=new System.Windows.Controls.Rectange(){.......}
myGridControl.Children.Add(rect); //myGridControl是Grid的Name,此处将rect对象添加为myGridControl的子对象
}
}
解决方法之一是不要采用在代码中生成这些UI控件,而是预先在XAML中预先放置一些这种Rectangle,然后在代码中根据Rectangle的名字来操控其属性,实现其位置的移动、显示属性的改变、隐藏或显示等特征。但是当需要大量这种UI时,预先放置就不可以了。。