當我點擊Bing地圖上的圖釘時,我顯示一個Custom InfoBox
,因爲Windows應用商店SDK中沒有內建一個圖釘。它顯示罰款,但當用戶點擊框外我想隱藏/解僱它,就像你在Windows 8中的本地冰毒地圖應用程序中看到的。隱藏信息框,當指針在外面點擊時
我試圖在地圖本身上設置一個Tapped
回調,但問題在於即使點擊圖釘來顯示信息框,它也總是被調用。
我可以使用一次性布爾當圖釘第一次點擊,但這似乎是一個醜陋的做法,什麼是一種更好的方式來完成我想要的?
當我點擊Bing地圖上的圖釘時,我顯示一個Custom InfoBox
,因爲Windows應用商店SDK中沒有內建一個圖釘。它顯示罰款,但當用戶點擊框外我想隱藏/解僱它,就像你在Windows 8中的本地冰毒地圖應用程序中看到的。隱藏信息框,當指針在外面點擊時
我試圖在地圖本身上設置一個Tapped
回調,但問題在於即使點擊圖釘來顯示信息框,它也總是被調用。
我可以使用一次性布爾當圖釘第一次點擊,但這似乎是一個醜陋的做法,什麼是一種更好的方式來完成我想要的?
在地圖上添加點擊/點按事件。爲了防止點擊事件冒泡到地圖,在圖釘上的點擊事件中,將事件args句柄屬性設置爲true。這將使得地圖點擊甚至在點擊圖釘時不會觸發。您也可以爲信息框添加類似的點按事件/處理屬性,以便在單擊信息框時它不會關閉。
我認爲解決這個的最好方法就是使用附帶的彈出按鈕如下圖所示(我不知道,如果你使用的是Windows 8.1,但現在這就是我做一個假設)
您可以添加附加的彈出窗口,以圖釘象下面這樣:
<maps:Pushpin Height="100" Width="100" Tapped="UIElement_OnTapped">
<FlyoutBase.AttachedFlyout>
<Flyout>
<Grid Width="100" Height="100" Background="Red"></Grid>
</Flyout>
</FlyoutBase.AttachedFlyout>
<maps:MapLayer.Position>
<maps:Location Latitude="47.610039" Longitude="-122.342207" />
</maps:MapLayer.Position>
</maps:Pushpin>
而在螺紋事件中,你添加一些代碼,以顯示彈出:
var element = sender as FrameworkElement;
if (element != null) {
FlyoutBase.ShowAttachedFlyout(element);
}
因爲彈出自動爲LightDismis黑貂,你不必再擔心信息框的關閉了。
只需使用您的自定義信息框將紅色背景替換爲網格,並且您可以輕鬆前往。 (可能一些對齊的東西要100%)
希望這會有所幫助。