2011-02-15 4 views
0

누구나 Bing Maps 컨트롤에서 고정 핀을 초기화하는 방법에 대한 좋은 지침이 있습니까? 현재 시나리오는 작동하지만 100 % 정확하지는 않습니다 ... 세부 정보 설명 :Windows Phone 7 - Bing Maps MVVM 고정 핀 초기화

Bing Maps 컨트롤이있는 페이지를 열면 사용자가 작은 버튼을 누를 수 있기를 원합니다. 현재 위치가 표시됩니다. 현재 위치를 표시하려면 압핀을 사용하고 있습니다. XAML 파일의 컨트롤에 다음과 같이 Pushpin을 추가하고 있습니다.

<map:Pushpin> x:Name="currentLocation" Location="{Binding CurrentLocation}" Content="Me" ManipulationStarted="CurrentLocationPin_ManipulationStarted" </map:Pushpin> 

이제이 시나리오에 몇 가지 문제가 있습니다. 하나, 압정은 항상 볼 수 있습니다! 그러면 어떻게해야합니까? (나는 가시성을 속성에도 바인딩 할 수 있고 가시성 변환기에 bool을 사용하지만 이것이 최선의 방법일까요?) 둘째, 이제 뷰 모델에서 Location을 초기화하지 않습니다. 의미 론적 이유 Geocoordinate.Unkown (사용자가 현재 위치가 설정되기 전에 사용자가 일부 조작을 시도 할 때이를 검사 할 수있는 방식으로) 기본값을 초기화하고 싶습니다. 그러나 시작시 압핀을 초기화 할 때 다음 오류가 발생합니다 : "UIElement.Arrange (finalRect)는 finalRect의 무한 또는 NaN 값으로 호출 할 수 없습니다.". 그래서 내 질문 다시 :) currentlocation 압정을 설정하는 좋은 지침은 무엇입니까? (그러나 현재 위치가 설정되기 전에 사용자가 작은 애플리케이션 바 버튼을 누르십시오)

+0

정말 XAML입니까? 보이지 않습니다. –

+0

XAML은 다음과 같습니다. ' – Depechie

답변

0

초기화 문제는 Pushpin의 가시성 때문입니다. Pushpin의 초기 가시성이 Collapsed 인 경우 오류가 발생하지 않도록 정렬 경로에 참여하지 않습니다.

뷰 모델을 사용하여이 뷰를 백업하는 경우 Pushpin이 보이지 않아야하는지 여부를 결정하는 뷰 모델의 속성을 노출하는 데는 문제가 없습니다. 예, 가시성 변환기에 부울을 사용할 수도 있지만 실제로 사용한 Visibility 속성을 노출하여 일부 처리를 줄일 수 있습니다.

버튼 누름에서 Pushpin의 표시를 시작하는 명령을 사용하는 경우 (Silverlight Windows Phone Toolkit은 명령에 응용 프로그램 바 버튼 연결을 사용하는 동작이 있음).

+0

푸시 핀을 가시성 속성으로 표시할지 여부를 결정하는 팁은 훌륭합니다. :) 그러나 고정 기능을 Visibility.Collapsed (이 속성 포함)로 설정하더라도 압정을 Geocoordinate로 초기화하려고하면 오류가 발생합니다. 알았어! – Depechie

+0

흠, 그건 수치 스럽습니다. 이 경우, Backing 필드를'GeoCoordinate.Unknown'으로 초기화 할 수 있지만 getter 속성에 유효한 좌표를 반환하십시오. 그게 효과가있다. –

+0

좋아, 내가 찾고 있던 것이 아닙니다 ... 어쩌면 압핀을 벗고 사용자가 내 위치 찾기 버튼을 강타했을 때만 추가 할 것입니다 ... – Depechie