首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WinRT中强制重新应用ItemTemplateSelector

在WinRT中强制重新应用ItemTemplateSelector
EN

Stack Overflow用户
提问于 2012-11-17 22:16:58
回答 2查看 831关注 0票数 1

在SemanticZoom控件中,我有一个GridView作为缩小视图。此GridView使用自定义DataTemplateSelector作为ItemTemplateSelector。它为我的应用程序显示的每个内容组显示一个项目。

模板根据组是否为空而不同。这在加载时工作得很好,但当一个组变为空或停止为空时,它不会更新。

我发现ItemTemplateSelector只在页面第一次显示时运行。如何才能强制DataTemplateSelector再次运行。

关于此主题的问题都建议使用触发器,但这些在WinRT XAML中不可用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-17 22:27:12

我已经找到了一个类似的WPF问题的答案,它以一种在WinRT中工作的方式回答了这个问题:

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

基本上,您将ItemTemplateSelector设置为null,然后再次设置它。如下所示:

代码语言:javascript
复制
var templateSelector = MyGroupView.ItemTemplateSelector;
MyGroupView.ItemTemplateSelector = null;
MyGroupView.ItemTemplateSelector = templateSelector;

这是可行的,但如果有更好的方法的话,我很高兴被告知。

票数 1
EN

Stack Overflow用户

发布于 2014-11-13 08:38:58

我发现只需从集合中删除需要更新的项并将其添加回来会更容易。这将强制GridView或ListView应用模板。在MVVM世界中,这很容易做到。

代码语言:javascript
复制
var itemToReload; //The object who's template needs updating
var reloadIndex  = this.SomeCollection.IndexOf(itemToReload);

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

需要注意的一件事是,如果项是“选定”项,则需要重新应用该选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13431397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档