2017-01-31 1 views
0

"Fill"属性を設定するとMapControlのMapRightTappedメッセージをキャッチできません。どうすればいいですか?以下のようにMapControlに楕円を描きます。はMapControlのMapRightTappedメッセージをキャッチできません

<Ellipse maps:MapControl.Location="{x:Bind CurrentLocation,Mode=OneWay}" 
    Fill="#597FACFE" 
    Opacity="0.3" 
    Stroke="#FF81AEFF" 
    StrokeThickness="2" 
    Width="50" 
    Height="50" 
    Margin="50"/> 
+0

これはCとどのように関連していますか?タグをスパムしないでください! – Olaf

答えて

0

あなたはMapItemsControlアイテムコレクションにEllipseコントロールを追加し、それはあなたがMapRightTappedイベントにアクセスすることはできませんマップコントロールをカバーするようにFillプロパティでそれはそうです。私の意見では、MapItemsControlに追加されたアイテムはXAMLコントロールコレクションであり、マップ相対イベントをリッスンすることはできません。これを解決するにはMapControl.MapElementsMapElementコレクションを追加することができます。これはMapElementWindows.UI.Xaml.Controls.Mapsから継承されているためです。たとえば、次のコードでは、塗りつぶした色で地図に矩形を追加していますが、MapRightTappedイベントハンドルは防ぎません(Geocircleを代わりに描画できます)。 MapElementの追加について

private void btnaddpologon_Click(object sender, RoutedEventArgs e) 
{ 
    double centerLatitude = MapMain.Center.Position.Latitude; 
    double centerLongitude = MapMain.Center.Position.Longitude; 
    MapPolygon mapPolygon = new MapPolygon(); 
    mapPolygon.Path = new Geopath(new List<BasicGeoposition>() { 
     new BasicGeoposition() {Latitude=centerLatitude+5, Longitude=centerLongitude-1 }, 
     new BasicGeoposition() {Latitude=centerLatitude-5, Longitude=centerLongitude-1 }, 
     new BasicGeoposition() {Latitude=centerLatitude-5, Longitude=centerLongitude+1 }, 
     new BasicGeoposition() {Latitude=centerLatitude+5, Longitude=centerLongitude+1 }, 
    }); 
    mapPolygon.ZIndex = 1; 
    mapPolygon.FillColor = Colors.Red; 
    mapPolygon.StrokeColor = Colors.Blue; 
    mapPolygon.StrokeThickness = 3; 
    mapPolygon.StrokeDashed = false; 
    MapMain.MapElements.Add(mapPolygon); 
} 

詳細official sampleのシナリオ2を参照してください。しかし、にはXAMLでバインドしてMapElementを追加できない場合があります。

RightTappedイベントをキャッチしてEllipseコントロールをキャッチし、このイベントハンドルで同じことをMapRightTappedで行ったように行うこともできます。

<Maps:MapControl 
    x:Name="MapMain"  
    MapRightTapped="MapMain_MapRightTapped" > 
    <Maps:MapItemsControl x:Name="MapItems"> 
     <Ellipse 
      x:Name="ell" 
      ... 
      Fill="#597FACFE"     
      Opacity="0.3" RightTapped="ell_RightTapped">  
     </Ellipse> 
    </Maps:MapItemsControl> 
</Maps:MapControl> 

の背後にあるコード:

private void ell_RightTapped(object sender, RightTappedRoutedEventArgs e) 
{ 
    var input = e.GetPosition(ell);  
    System.Diagnostics.Debug.WriteLine("x:" + input.X + "y:" + input.Y); 
} 

しかし、我々はMapRightTappedEventArgsを取得することはできませんこの方法。

関連する問題