2011-10-16 5 views
0

Windows Phone 7 앱의 빙지도의 레이어에 2 개의 압정을 추가하려고합니다. 일부 미리 정의 된 특성을 사용하여 압핀을 만드는 함수를 만들었습니다. 이상한 점은이 함수를 사용하여 첫 번째 핀을 만들 때
Pushpin pin;
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; 
     } 
+0

이 코드가 첫 번째 고정 핀에 대한 참조를 만드는 것을 어떻게 알 수 있습니까? 참조가 동일하다는 것을 어떻게 알았습니까? –

+0

다른 곳에서 어떤 마법에 걸린 코드가 없다면, 우리에게 말하는 것은 불가능합니다. –

+0

@ MarkByers 두 개의 압핀이 같은 위치에 있기 때문에 디버깅하는 동안 시계의 기능을 수행하는 동안 새 Pushpin()을 실행했습니다. 그러면 첫 번째 압핀이 반환됩니다. –

답변

0

동료와 이야기를 한 후, 클래스 Pushpin에 위치에 연결된 종속성 속성이 있음이 밝혀졌습니다. 그것이 바로 그 이유입니다. 해결책은 다음을 수행하는 것입니다.

Pushpin pin = new Pushpin(){ 
        Location = new Location(){ 
         Latitude = lat,Longitude = lon, Altitude = 0 
        } 
       }; 
+0

종속성 속성과 관련이 없다고 생각합니다. 그것은 공유되는 Location 객체와 관련이 있습니다. 그래서 저는 위의 대답에서 제 직감이 맞았다 고 생각합니다. 비록이 웹 페이지에서 3 가지 인자를 가진 생성자가 있다고 잘못 판단 했었습니다 : http://msdn.microsoft.com/en-us/library/microsoft.maps .mapcontrol.location.location.aspx –

+0

@CoreyKosak 이것은 내가 말하고자하는 것입니다.위치는 종속성을 통해 공유됩니다. 그러나 이것은 함수 내에서 새로운 압핀을 사용할 때만 발생합니다. 이것은 내가 이해하지 못하는 것입니다. –

+0

.NET 용어를 올바르게 사용하고 있지 않습니다. "DependencyProperty"라는 용어는 Microsoft에서 Windows Presentation Foundation (WPF)과 함께 도입 한 속성 기술을 나타냅니다. 종속성 속성은 단순한 CLR proeprty가 아닙니다. 이 속성이 다른 속성에 "의존"하는 것처럼 보이기 때문에이 속성을 DependencyProperty라고 부르면 안됩니다. 자세한 내용은 다음을 참조하십시오. http://msdn.microsoft.com/en-us/library/ms752914.aspx –

0

입니다. 그렇다면 범인은 "위치"객체가 실수로 세 개의 압핀 사이에서 공유되고 있어야한다고 생각합니다. (나는 그렇게 할 수있는 압정 생성자의 매우 무책임한 생각, 그러나 다시, 나는 당신이 제공 한 증거가 아닌 내 자신의 경험에서거야)

당신이에

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

를 시도 할 수 위의 코드에서 적절한 위치에 무엇이 발생하는지 알려주십시오.

+0

위치에이 유형의 생성자가 없습니다. 그러므로 나는 이것을 사용할 수 없다. –

관련 문제