Ваша очевидная проблема в том, что вы используете Resources[]
вместо FindResource()
. В общем случае Resources[]
будет работать только в том случае, если ваш ресурс находится в словаре this.Resources
, а не где-либо еще.
Вот как бы я переписал ваши две строки кода:
ListViewBack.ItemsPanel = (ItemsPanelTemplate)ListViewBack.FindResource("IconGridPanelTemplate");
ListViewBack.ItemTemplate = (DataTemplate)ListViewBack.FindResource("IconGridDataTemplate");
На самом деле, я бы с большей вероятностью использовал триггеры или использовал DynamicResource и менял словари ресурсов для этой цели, но это уже другая история.
Обратите внимание, что я позвонил ListViewBack.FindResource()
вместо FindResource()
. Это в случае, когда IconGridPanelTemplate переопределяется в словаре ресурсов ниже уровня UserControl. Если это никогда не будет возможно, вы можете просто позвонить FindResource()
.