1

MapControl に線を引く必要があります。私は XAML を持っています 私の MapControl を表示します:

<Maps:MapControl x:Name="mapMain" 
                         MapServiceToken="{StaticResource MapServiceTokenString}" 
                         RenderTransformOrigin="0.5,0.5" 
                         Margin="0,0,0,0"
                         extentions:PolyLineMapControl.ItemsCollection="{Binding  mapViewModel.PointsOfNodes}">
            <Maps:MapItemsControl x:Name="ItemsChanged"
                    ItemsSource="{x:Bind mapViewModel.PointsOfNodes, Mode=OneWay}">
                <Maps:MapItemsControl.ItemTemplate>
                    <DataTemplate x:DataType="data:PointOfNode">
                        <StackPanel>
                            <Border Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
                                <TextBlock Text="{x:Bind DisplayName, Mode=OneWay}"/>
                            </Border>
                            <Image Source="{x:Bind ImageSourcePath, Mode=OneWay}"
                                    Maps:MapControl.Location="{x:Bind Location, Mode=OneWay}"
                                    Maps:MapControl.NormalizedAnchorPoint="{x:Bind NormalizedAnchorPoint, Mode=OneWay}">
                                <Image.Transitions>
                                    <TransitionCollection>
                                        <EntranceThemeTransition/>
                                    </TransitionCollection>
                                </Image.Transitions>
                            </Image>
                        </StackPanel>
                    </DataTemplate>
                </Maps:MapItemsControl.ItemTemplate>
            </Maps:MapItemsControl>
        </Maps:MapControl>

mapViewModel からポイントを正常に取得できますが、拡張が機能しません。

public class PolyLineMapControl
{
public static readonly DependencyProperty ItemsCollectionProperty = DependencyProperty.RegisterAttached("ItemsCollection", typeof(List<PointOfNode>), typeof(PolyLineMapControl), new PropertyMetadata(default(List<PointOfNode>), OnItemsChanged));

        public static List<PointOfNode> GetItemsCollection(DependencyObject obj)
        {
            return (List<PointOfNode>)obj.GetValue(ItemsCollectionProperty);
        }

        public static void SetItemsCollection(DependencyObject obj, List<PointOfNode> value)
        {
            obj.SetValue(ItemsCollectionProperty, value);
        }

        private static void OnItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
        //draw line
        }
}

プロパティが正常に初期化されました。セッター、ゲッター、チェンジャーのメソッドとプロパティにブレークポイントを設定すると、これが検出されました。

4

1 に答える 1