我必须在 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
}
}
属性初始化成功。当我在 setter、getter、changer 方法和属性中设置制动点时,我检测到了这一点。