写了一个图片处理程序,需要在图片上加许多点,这些点从xml读取的,事先不知道有多少个,因此只能动态加载,可以顺利加载,但是不会为这些控件添加事件了 ,我的代码如下:        private void DrawlineByXml()
        {
           // StringBuilder builder = new StringBuilder();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load("../../AreaLine.xml");
             XmlNode AreaList = xmlDoc.SelectSingleNode("AreaList");//查找根节点
            XmlNodeList xnl = AreaList.ChildNodes;
            foreach (XmlNode xnf in xnl)
            {
                //每个区域的信息
                XmlElement xe = (XmlElement)xnf;
                string name = xe.GetAttribute("区域名称");
                string color = xe.GetAttribute("区域颜色");
                // string area = xe.GetAttribute("");
                XmlNodeList xnf1 = xe.ChildNodes;
                Point myPoint = new Point();
                drawArc.Clear();
                foreach (XmlNode xn2 in xnf1)
                {
                    string point = xn2.InnerText;//该区域的坐标点
          
                    int index = point.IndexOf(",");
                    myPoint.X = Convert.ToDouble(point.Substring(0, index));               
                    myPoint.Y = Convert.ToDouble(point.Substring(index+1, point.Length-index-1));
                    drawArc.Add(myPoint);
                }
                itDrawArc.Add(drawArc);
            }//****************************************
//*****************************************
 private void DrawPolygon()
        {
            int i = 1;
           // enum:Color{};
            
            PointCollection points=new PointCollection();
           
            DrawlineByXml();
            foreach (ArrayList arr in itDrawArc)
            {
                ArrayList draw = arr;
              foreach(Point point in arr)
            {
                points.Add(point);
            }
            polygon = new Polygon();
            SolidColorBrush brush = new SolidColorBrush();
            brush = chooseColor(i);
            i++;
            
            polygon.Stroke = brush;
            polygon.Fill = brush;
            polygon.Opacity = 0.3;
            polygon.Points = points;
          //  polygon.MouseMove += new MouseEventHandler(polygon_MouseMove);
          // polygon.MouseLeave += new MouseEventHandler(polygon_MouseLeave);
           // polygon.MouseLeftButtonDown += new MouseButtonEventHandler(polygon_MouseLeftButtonDown);
            //   polygon.MouseMove+=new MouseEventHandler(polygon_MouseMove);
         //   MapCanvas.Children.Add(polygon);
            recArea.Add(polygon);
            }
            foreach (Polygon myPoly in recArea)
            {
                myPoly.MouseMove += new MouseEventHandler(myPoly_MouseMove);
                myPoly.MouseLeave += new MouseEventHandler(myPoly_MouseLeave);
                myPoly.MouseLeftButtonDown += new MouseButtonEventHandler(myPoly_MouseLeftButtonDown);
                MapCanvas.Children.Add(myPoly);
            }        }