NotifyCollectionChangedEventHandler - 如何清除集合

时间:2014-09-24 19:01:08

标签: silverlight csv gps

我正在使用此示例:http://www.arcgis.com/home/item.html?id=ef6a80c07fb84f84a5fe5192221f582c 特别是“GraphicsDataSourcesDemo”,它使用Silverlight API。 它允许使用Lat Long坐标加载csv文件,这些坐标在地图上显示为点。在我自己的应用程序中,我成功地实现了关于显示点的部分,但是我有一个Clear按钮的问题(在包含的示例代码中没有实现)。由于使用了INotifyCollectionChangedStreamReader,标准方法如:

private void GPSClearButton_Click(object sender, RoutedEventArgs e)
{
  GraphicsLayer graphicsLayer = Map.Layers["data"] as GraphicsLayer;
  graphicsLayer.ClearGraphics();            
}

不起作用。

我很感激任何有关如何使显示点从我的地图中消失的建议(在用户通过点击按钮清除后决定)。

1 个答案:

答案 0 :(得分:0)

图形元素仅代表数据项,因此要么丢弃数据项(这是我从“Clear”操作中理解的),要么“隐藏”显示的数据项,以后能够再次“展示”他们。只有后者才能在View / GraphicsLayer中解决。前者意味着您必须“清除”数据项列表,即坐标,并且(如果使用正确)从View到DataContext的绑定将确保从UI中删除所有相应的可视元素。

所以你需要这样的东西:

public class CoordinateCollectionViewmodel
{
    public ICommand Clear { get; set; } // setup to call Coordinates.Clear()
    public ObservableCollection Coordinates { get; set; }
}