2012-11-17 5 views
1

SemanticZoom 컨트롤에서 내 축소보기로 GridView가 있습니다. 이 GridView는 사용자 정의 DataTemplateSelector를 ItemTemplateSelector로 사용합니다. 내 앱이 보여주는 각 콘텐츠 그룹에 대한 항목을 보여줍니다.WinRT에서 ItemTemplateSelector 강제 적용

템플릿이 비어 있는지 여부에 따라 템플릿이 다릅니다. 이것은로드시에는 잘 작동하지만 그룹이 비게되거나 비어있는 경우 업데이트되지 않습니다.

ItemTemplateSelector는 페이지가 처음 표시 될 때만 실행되는 것으로 나타났습니다. DataTemplateSelector가 다시 실행되도록하려면 어떻게해야합니까?

이 항목에 대한 WPF 질문은 모두 트리거를 제안하지만 WinRT XAML에서는 사용할 수 없습니다.

답변

1

나는 WinRT에서 작동하는 방식이 응답 비슷한 WPF 질문에 대한 답을 발견했습니다

https://stackoverflow.com/a/11327087/31569

은 기본적으로 당신이 ItemTemplateSelector를 null 후 다시 설정하는 설정합니다. 좋아요 :

var templateSelector = MyGroupView.ItemTemplateSelector; 
MyGroupView.ItemTemplateSelector = null; 
MyGroupView.ItemTemplateSelector = templateSelector; 

이 방법을 사용하는 것이 더 효과적 일 수 있습니다.

1

업데이트가 필요한 항목을 컬렉션에서 삭제하고 다시 추가하는 것이 더 쉽습니다. 이렇게하면 GridView 또는 ListView에서 템플릿을 강제로 적용합니다. 이것은 MVVM 세계에서 쉽게 할 수 있습니다.

var itemToReload; //The object who's template needs updating 
var reloadIndex = this.SomeCollection.IndexOf(itemToReload); 

this.SomeCollection.Remove(itemToReload); 
this.SomeCollection.Insert(reloadIndex, itemToReload); 

주목할 점은 항목이 '선택됨'항목 인 경우 해당 항목을 다시 적용해야한다는 것입니다.

+0

참고 : ObservableCollection을 다음과 같이 사용하십시오. – garenyondem