有時,利用程序生成的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時,預先放置就不可以了。。