あなたはMapItemsControl
アイテムコレクションにEllipse
コントロールを追加し、それはあなたがMapRightTapped
イベントにアクセスすることはできませんマップコントロールをカバーするようにFill
プロパティでそれはそうです。私の意見では、MapItemsControl
に追加されたアイテムはXAMLコントロールコレクションであり、マップ相対イベントをリッスンすることはできません。これを解決するにはMapControl.MapElements
にMapElement
コレクションを追加することができます。これはMapElement
がWindows.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
を取得することはできませんこの方法。
これはCとどのように関連していますか?タグをスパムしないでください! – Olaf