MapItemscontrol不能反映对相应项目的消除



在uwp-app(Windows 10)中,我有一个MapControl,并且我正在使用MapItemsControl为该地图提供覆盖层。该MapItemsControlItemsSource(即ObservableCollection)是通过XAML绑定的,但仅在一个方向上工作:

将项目添加到该集合中工作正常,并且这些项目也显示在MapControl中。删除该集合的项目也可以正常工作,但是似乎仅在该集合中 - 我的MapControl上的视觉表示对删除元素没有反应。这可能会导致该地图中的项目添加无限,而没有任何项目被删除。

ObservableCollection经常(通过MapControl.ZoomLevelChanged-Event)更新,并清除&在该过程中重新填充 - 这可能是一个问题?

通过XAML绑定看起来像这样:

 <maps:MapControl
    HorizontalAlignment="Stretch"
    VerticalAlignment="Stretch"
    [...]>
    <maps:MapItemsControl ItemsSource="{x:Bind Path=MapDirectionOverlay, Mode=OneWay}"/>
</maps:MapControl>

有什么建议?

删除该集合的项目也工作起来,但是似乎仅在该集合中 - 我的mapcontrol上的视觉表示不会对删除元素做出反应。

ObservableCollection代表一个动态数据收集,该数据集合在添加,删除或刷新整个列表时提供通知。因此,如果添加或删除项目,则应反映绑定的集合和ItemsSouce

由于我不知道您是如何删除该物品的,因此使用删除ObeservableCollection的方法,例如删除,删除和删除IntiTem,它们应该与删除项目以及在地图中删除通讯项目一起效果很好。

但是,如果将ObeservableCollection设置为null将不会对ItemsSouce产生任何影响。在此方案中,您需要将MapItemsControlItemsSouce设置为手动null,但不推荐。

由于使用了clear-hethod没有解决问题,所以我尝试使用ObservableCollection的其他删除方法,并最终使用。

最终,这是我正在使用的解决方法:

private new void Clear()
{
    for (int i = this.Count - 1; i >= 0; i--)
    {
        this.RemoveAt(i);
    }
}

毕竟我仍然没有得到,为什么简单的Clear无法正常工作,因为它仍然应该提高NotifyCollectionChangedAction。(如果我错了,请纠正我)

相关内容

  • 没有找到相关文章

最新更新