Die meiner Meinung nach einfachste Variante (weil ich sie kenne) wäre, wenn Du alles in ein Grid legst.
Wenn Du in dieses Grid zwei Controls rein legst, werden die übereinander dargestellt, das Zweite vor dem Ersten.
Wenn das Zweite deine normale Ansicht ist und das Erste leicht grauen Hintergrund hat und darin groß deine Kachel darstellt, hast Du was Du haben willst.
Die andere und deutlich flexiblere Variante sind Adorners.
Das sind Elemente, die völlig unabhängig gerendert werden, nicht im VisualTree liegen und über deiner UI angezeigt werden. Darüber könntest Du z.B. bei einem Drag$Drop-Vorgang permanent das gedraggte Element unter der Maus anzeigen lassen.
Probleme kann es hier geben, weil es nicht im VisualTree liegt und das DataBinding nicht so reibungslos funktioniert, wie Du es kennst. Das ist das gleiche Problem wie beim ContextMenu, das lässt sich aber mit einem
BindingProxy recht einfach lösen.
Damit habe ich bisher aber nichts gemacht, nur theoretisch gelesen, daher kann ich das nur als Idee in den Raum werfen.