В целом, не рекомендуется копаться в отдельных шаблонных элементах в ItemsControl, потому что это не только боль, но и то, что ItemTemplate может регенерировать в разное время (подкачка во время виртуализации, обновления исходной коллекции и т. Д.), И вы 'останется с устаревшим элементом UIE, который больше не отображается.
Лучший подход - перенести необходимые данные в данные элемента, а в ItemTemplate использовать привязку данных, чтобы внести любые изменения, необходимые для дифференциации интерфейса пользователя.,Одним из вариантов является использование IValueConverter для получения другого изображения в зависимости от некоторого состояния в данных элемента:
<GridView>
<GridView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Path=DataState, Converter={StaticResource MyStateToImageConverter}}"/>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
Здесь я предполагаю, что код преобразователя был написан, а экземпляр преобразователя ужеобъявлен ресурсом ( см. здесь ).В качестве альтернативы вы можете выполнить прямую привязку к свойству данных каждого элемента, которое указывает его изображение, и пропустить часть конвертера.