1

SemanticZoom コントロールの縮小ビューとして GridView があります。この GridView は、カスタム DataTemplateSelector を ItemTemplateSelector として使用します。アプリが表示する各コンテンツ グループのアイテムを表示します。

グループが空かどうかでテンプレートが異なります。これはロード時に問題なく動作しますが、グループが空になるか、空でなくなると更新されません。

ItemTemplateSelector は、ページが最初に表示されたときにのみ実行されることがわかりました。DataTemplateSelector を強制的に再実行するにはどうすればよいですか。

このトピックに関する WPF の質問はすべてトリガーを示唆していますが、これらは WinRT XAML では使用できません。

4

2 に答える 2

1

WinRT で機能する方法でこれに答える、同様の WPF の質問に対する回答を見つけました。

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

基本的に、ItemTemplateSelector を null に設定してから、再度設定します。このような:

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

これは機能しますが、これを行うためのより良い方法があるかどうか教えていただければ幸いです.

于 2012-11-17T14:27:11.853 に答える
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);

注意すべきことの 1 つは、アイテムが「選択済み」アイテムの場合、その選択を再適用する必要があることです。

于 2014-11-13T00:38:57.827 に答える