Почему «новая кнопка ()» создает ссылку на предыдущую кнопку? - PullRequest
0 голосов
/ 16 октября 2011

Я хочу создать 2 кнопки для добавления их в слой в картах Bing в приложении Windows Phone 7. Я создал функцию, которая создает метку с некоторыми предопределенными атрибутами. Странно то, что когда я создаю первый вывод с помощью этой функции,
Pushpin pin; <br/> pin = new Pushpin(); работает как положено. Создает новую метку ... Но когда эта функция работает для второй кнопки, вышеуказанный код создает ссылку на первую кнопку ... Почему?

Код, который я использую, - ниже

Pushpin pin0 = createDefaultPushpin(38.0, 23.0, "test0");
Pushpin pin1 = createDefaultPushpin(39.0, 24.0, "test1");


private Pushpin createDefaultPushpin(double lat, double lon, String name)
        {
            Pushpin pin;
            pin = new Pushpin();


            pin.Location.Latitude = lat;
            pin.Location.Longitude = lon;
            pin.Location.Altitude = 0;
            pin.Name = name;

            ScaleTransform st = new ScaleTransform();
            st.ScaleX = 0.25;
            st.ScaleY = 0.25;
            st.CenterX = 0;
            st.CenterY = 60;

            pin.RenderTransform = st;
            pin.Background = new SolidColorBrush(Colors.Blue);
            return pin;
        }

Ответы [ 2 ]

0 голосов
/ 17 октября 2011

После разговора с коллегами выяснилось, что класс Pushpin имеет свойство зависимости, привязанное к location.Вот почему он так себя ведет.Решение заключается в следующем.

Pushpin pin = new Pushpin(){
                  Location = new Location(){
                      Latitude = lat,Longitude = lon, Altitude = 0
                  }
              };
0 голосов
/ 17 октября 2011

Я никогда не использовал эти классы или эту платформу, но давайте примем все, что вы сказали выше, как факт.Тогда я думаю, что виновником должно быть то, что объект «Местоположение» непреднамеренно распределяется между вашими тремя Pushpins.(Я думаю, что это довольно безответственно со стороны конструктора Pushpin, но опять же, я просто исхожу из предоставленных вами доказательств, а не из моего собственного опыта)

Можете ли вы попробовать

pin.Location=new Location(lat, lon, 0);

в соответствующем месте кода выше, и расскажите нам, что происходит?

...