我有一个带有MapsItemControl的Map控件:
<maps:Map x:Name="MyMap">
<maptk:MapExtensions.Children>
<maptk:MapItemsControl>
<maptk:MapItemsControl.ItemTemplate>
<DataTemplate>
. . .
</DataTemplate>
</maptk:MapItemsControl.ItemTemplate>
</maptk:MapItemsControl>
</maptk:MapExtensions.Children>
</maps:Map>
我通过以下方式在代码中填充
MapItemsControl
:var itemCollection = MapExtensions.GetChildren((Map)MyMap).OfType<MapItemsControl>().FirstOrDefault();
itemCollection.ItemsSource = myItemCollection;
首次将项目添加到 map 时,此方法可以正常工作。但是,如果我想使用新的soruce项集合进行更新,则在
itemCollection.ItemsSource = myItemCollection;
行中会收到以下错误:因此,我尝试在代码中添加一行,以便在再次设置源之前删除项目,但没有成功:
var itemCollection = MapExtensions.GetChildren((Map)MyMap).OfType<MapItemsControl>().FirstOrDefault();
itemCollection.Items.Clear();
itemCollection.ItemsSource = myItemCollection;
现在,我在
itemCollection.Items.Clear();
行中得到以下异常:如何更新
MapItemsControl
中的项目? 最佳答案
如果将其与ItemsSource绑定(bind),则似乎被锁定了,但是如果使用Item.Add(item)添加每个项目,则可以正常工作。
所以我最终要做的是:
var itemCollection = MapExtensions.GetChildren((Map)MyMap)
.OfType<MapItemsControl>().FirstOrDefault();
if(itemCollection != null && itemCollection.Items.Count >0)
{
itemCollection.Items.Clear();
}
foreach(var item in YourPushpinCollection)
{
itemCollection.Items.Add(item);
}
希望这可以帮助 :)
关于c# - 更新MapItemsControl.ItemsSource时的"Items must be empty before using Items Source",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18574819/