2016-12-22 3 views
0

UWP-App (Windows 10) 내에서 MapControl이 있고 MapItemsControl을 사용하여 해당 맵의 오버레이를 전달합니다. 그 MapItemsControlItemsSource은 (여기서은 ObservableCollection이다) XAML 통해 결합되어 있지만, 한 방향으로 만 작동 : 그 컬렉션에 항목 추가MapItemsControl은 해당 ItemsSource의 제거를 반영하지 않습니다

잘 작동하고 그 상품 그것도 MapControl에 나타낸다. 해당 컬렉션으로 항목을 삭제해도 작동하지만 그 컬렉션 내에서만 보이는 것입니다. MapControl의 시각적 표현은 요소 제거에 반응하지 않습니다. 이로 인해 해당 맵에 항목을 무한대로 추가 할 수 있으며 제거 된 항목은 없습니다.

ObservableCollection

은 ( MapControl.ZoomLevelChanged-Event를 통해) frequentely 조용 업데이트되는 그 과정에서 다시 채워 &를 삭제됩니다 - 그 문제가 될 수 있는가?

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

어떤 제안 :

XAML을 통해 바인딩은 다음과 같습니다?

답변

0

Clear-Method을 사용하여 트릭을하지 못했기 때문에 ObservableCollection의 다른 제거 방법을 사용하여 결국 효과가있었습니다. 결국

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

난 아직도하지 않습니다, 그것은 여전히 ​​NotifyCollectionChangedAction를 제기해야하기 때문에 간단한 Clear이 작동하지 않을 이유 : 그래서 결국

이 내가 사용하고 해결 방법입니다. (틀렸다면 수정하십시오)

1

내 컬렉션에있는 항목을 제거해도 작동하지만 내 컬렉션에있는 것처럼 보입니다. 내 MapControl의 시각적 표현은 요소 제거에 반응하지 않습니다.

ObservableCollection은 항목이 추가, 제거 또는 전체 목록이 새로 고쳐질 때 알림을 제공하는 동적 데이터 수집을 나타냅니다. 따라서 항목을 추가하거나 제거하면 모음과 ItemsSouce 바인딩이 업데이트되어 반영되어야합니다. 당신이 ObeservableCollection 같은 Remove, RemoveAtRemoveItem 방법 제거를 사용하여 항목을 제거하는 방법을 모르겠어요 때문에

, 그들은 맵에 대응 항목을 항목을 제거뿐만 아니라 제거 잘 작동합니다. 그냥이 시나리오 .IN ItemsSouce에 영향을하지 않습니다 ObeservableCollectionnull에 설정하면

는하지만 MapItemsControlItemsSouce 수동으로 null로하지만, 이는 권장되지 않는 설정해야합니다.

+0

[제거] (https://msdn.microsoft.com/en-us/library/ms132405(v=vs.110).aspx) 항목을 제거하고 있습니다. 내 ObeservableCollection에서 - 여전히 그 항목 justs의 시각적 표현은 새로운 항목을 추가하지만 절대 그들을 제거 ... –

관련 문제