1

画鋲を動的に表示するマップがあり、マップを操作せずに画鋲を操作したい (そのため、 を設定してマップを無効にしたり、IsEnabled="False"マップの画像を使用したりすることはできません)。

ここに示すテクニックを試してみました:固定マップでプッシュピンのタップを処理します。これは、ズームとパンに最適です。

このアイデアを拡張して、一致すると思われるすべてのイベントに対してイベント ハンドラーを設定しました。

   Hold="map_Hold"
   MapPan="map_MapPan"
   MapZoom="Map_MapZoom"
   ManipulationStarted="map_ManipulationStarted"
   ManipulationDelta="map_ManipulationDelta"
   ManipulationCompleted="map_ManipulationCompleted"
   MouseLeftButtonDown="map_MouseLeftButtonDown"
   MouseLeftButtonUp="map_MouseLeftButtonUp"
   TargetViewChanged="map_TargetViewChanged"
   ViewChangeStart="map_ViewChangeStart"
   ViewChangeEnd="map_ViewChangeEnd"
   ViewChangeOnFrame="map_ViewChangeOnFrame"

(私が設定したイベントハンドラーでe.Handled = true;

それでも、フリック モーションを作成してマップをパンすることはできます (写真アプリで次の画像にフリックする方法と同じです)。

マップのパンを完全に無効にする方法はありますか? または、ピンと対話する方法はありますかIsEnabled="False"?

4

1 に答える 1

1

この投稿は少し前のものなので、おそらく今では問題は解決しています。しかし、今日この問題があり、これが私が持っていた解決策です。(あまりエレガントではありませんが、うまくいくようです)。

私にとって、この問題は、プッシュピンをドラッグ アンド ドロップした後にプッシュピンを離したときに発生しました。ドラッグ アンド ドロップ後に固定します。

まず、DespatchTimer スコープのページとカウンターとなる int を作成します。

    DispatcherTimer dti = new DispatcherTimer();
int counter =0;

次に、画鋲の MouseLeftButton up イベントでマップを無効にし、間隔 1 でディスパッチ タイマーを開始します。また、Tick イベント ハンドラーを作成します。

 private void pushpin_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
Map.IsEnabled = false;
dti.Interval = new TimeSpan(0, 0, 0, 0, 1); // 1 Seconds
        dti.Start();
        dti.Tick += new EventHandler(dti_Tick);
//other code logic
}

次に、dti_Tick イベントを作成します。tick イベント内で、tick イベントへの 2 回目の反復時にディスパッチ タイマーを停止し、マップを再度有効にします。将来の使用のためにカウンターをリセットします。

 void dti_Tick(object sender, EventArgs e)
    {
        counter++;
        if (counter>= 1)
        {
            dti.Stop();
            Map.IsEnabled = true;
            counter= 0;
        }
    }

このプロセスにより、ドラッグ アンド ドロップ プッシュピン ロジックの後に発生する「フリック」が停止します。明らかに、このコードはさらに最適化できますが、お役に立てば幸いです。

于 2012-10-10T16:59:10.740 に答える