通常 GridView などに写真のタイルを表示する場合、ItemsSource には ObservableCollection
こうする代わりに PhotoViewModel を下記のような ItemContainerViewModel の Content に設定し、ObservableCollection
何が融通が利きやすくなって便利かというと「コンテンツと表示領域(コンテナ)を分離できる」という点に尽きます
たとえば上記のように、同一の写真を「新着」グループと「すべての写真」グループの表示する画面を作る場合、1つの ViewModel で表示しようとすると、同じ ViewModel を2重にコレクションに追加すると選択状態が同期してしまい、画面としてどちらの表示領域が選択されたかを区別することができません
かといって同じコンテンツ情報の複製を2つのグループに分けて登録してしまうと、写真の情報が更新された際に二重にプロパティ更新をしなくてはならなくなり面倒です
このような場合は上記のような ItemContainerViewModel に表示領域(コンテナ)に関する情報を持たせて、PhotoViewModel にコンテンツとしての情報を持たせれば、お互いの情報のモデルが分離されるのですんなりと扱えるようになるというわけです
コンテンツが更新されない読み取り専用の情報である場合は ViewModel ではなく Model を Interface によって抽象化することで直接公開するのもありかもしれません