在SemanticZoom控件中,我有一个GridView作为缩小视图。此GridView使用自定义DataTemplateSelector作为ItemTemplateSelector。它为我的应用程序显示的每个内容组显示一个项目。
模板根据组是否为空而不同。这在加载时工作得很好,但当一个组变为空或停止为空时,它不会更新。
我发现ItemTemplateSelector只在页面第一次显示时运行。如何才能强制DataTemplateSelector再次运行。
关于此主题的问题都建议使用触发器,但这些在WinRT XAML中不可用。
发布于 2012-11-17 22:27:12
我已经找到了一个类似的WPF问题的答案,它以一种在WinRT中工作的方式回答了这个问题:
https://stackoverflow.com/a/11327087/31569
基本上,您将ItemTemplateSelector设置为null,然后再次设置它。如下所示:
var templateSelector = MyGroupView.ItemTemplateSelector;
MyGroupView.ItemTemplateSelector = null;
MyGroupView.ItemTemplateSelector = templateSelector;这是可行的,但如果有更好的方法的话,我很高兴被告知。
发布于 2014-11-13 08:38:58
我发现只需从集合中删除需要更新的项并将其添加回来会更容易。这将强制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);需要注意的一件事是,如果项是“选定”项,则需要重新应用该选择。
https://stackoverflow.com/questions/13431397
复制相似问题