2012-09-24 112 views
1

我有一個圖釘集羣,我添加了foreach中所有圖釘的點擊事件。現在我需要找出哪個圖釘點擊,以便相應地採取行動。以下是我的示例代碼。圖釘點擊事件

private void setpins() 
{ 
      Pushpin pin = null;  

      lstpin.Add(new clsPushpin() { stores = "chennai", _loc= new locations() { lat = 13.04, longd = 80.17 } }); 
      lstpin.Add(new clsPushpin() { stores = "Karur", _loc = new locations() { lat = 10.58, longd = 78.07 } }); 
      lstpin.Add(new clsPushpin() { stores = "coimbatore", _loc = new locations() { lat = 11.00, longd = 77.00 } }); 

      foreach (clsPushpin cls in lstpin) 
      { 
       pin = new Pushpin(); 
       GeoCoordinate geo = new GeoCoordinate(cls._loc.lat, cls._loc.longd); 
       pin.Location = geo; 
       pin.Background = new SolidColorBrush(new Color() { A = 255, R = 0, G = 100, B = 120 }); 
       pin.Foreground = new SolidColorBrush(Colors.White); 
       mymap.Children.Add(pin); 
       pin.MouseLeftButtonUp += new MouseButtonEventHandler(pushpintap); 
      } 
      mymap.Center = pin.Location; 
      mymap.SetView(pin.Location, 5.0); 
    } 

    private void pushpintap(object sender, MouseButtonEventArgs e)  
    { 
     //Messagebox are what ever  
     MessageBox.Show("My lat long is:"+lat,+long);  
    } 

通過上面的代碼片段,保存了最後一個圖釘的值。但我想找到確切的針腳,選擇通知/彈出順從。 Thx提前。

回答

2

你可以做到以下幾點:

商店clsPushpin對象圖釘標記屬性。

在圖釘點擊事件中,將sender.tag轉換爲clsPushpin對象以獲取該圖釘的數據。

 foreach (clsPushpin cls in lstpin) 
     { 
      pin = new Pushpin(); 
      GeoCoordinate geo = new GeoCoordinate(cls._loc.lat, cls._loc.longd); 
      pin.Location = geo; 
      pin.Background = new SolidColorBrush(new Color() { A = 255, R = 0, G = 100, B = 120 }); 
      pin.Foreground = new SolidColorBrush(Colors.White); 
      mymap.Children.Add(pin); 
      pin.MouseLeftButtonUp += new MouseButtonEventHandler(pushpintap); 
      pin.Tag = cls; 
     } 

然後在你的pushpintap事件處理程序做到這一點:

private void pushpintap(object sender, MouseButtonEventArgs e)  
    { 
    //Messagebox are what ever  
    clsPushpin cls = sender.tag as clsPushpin; 

    MessageBox.Show("My lat long is:"+cls.lat.ToString()+","+cls.long.ToString());  
    } 

你也許應該使用數據綁定到數據綁定到圖釘的集合。

1

您應該在pushpintap事件中查詢sender以查找被點擊的引腳的詳細信息。

0

我有一個類似的問題,並尋找解決方案,我發現你的問題。我所做的是定義一個動態創建MouseButtonEventHandler的方法。例如,如果你想顯示每個cls對象的信息,您可以定義下一個方法:

public MouseButtonEventHandler getHandler(clsPushpin cls) 
    { 
     return delegate(object sender, MouseButtonEventArgs e) 
      { 
       MessageBox.Show(cls.stores+" at "+cls._loc.lat+","+cls._loc.longd); 
      }; 
    } 

,並調用它在每次創建時/加Pushpin

pin.MouseLeftButtonUp += getHandler(cls); 

[我試着做直接沒有定義getHandler方法(即:pin.MouseLeftButtonUp += delegate(...),並沒有工作]