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);    
  }

上記のスニペットでは、最後の画鋲の値が保存されます。しかし、それに応じて通知/ポップアップするために選択される正確なピンを見つけたいです。事前にt​​hx。

4

3 に答える 3

2

次のことができます。

clsPushpin オブジェクトを Pushpin Tag プロパティに格納します。

画鋲のクリック イベントで、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());    
  }

おそらくデータバインディングを使用して、データを画鋲のコレクションにバインドする必要があります。

于 2012-10-02T11:53:04.877 に答える
1

タップされたピンの詳細を確認するにはsender、イベントで をクエリする必要があります。pushpintap

于 2012-09-24T22:10:21.513 に答える
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(...ませんでした]

于 2012-10-15T23:28:39.313 に答える