Вы рисуете затененные кнопки внутри холста сетки. И каждая кнопка нарисована внутри своего клеточного холста. Очевидно, что дочерний элемент обычно не рисуется вне родительского холста.
Решение вашей проблемы, не говоря уже об обычном «создании собственного средства визуализации» для сетки, состоит в том, чтобы нарисовать каждого дочернего элемента поверх предыдущих дочерних элементов. Тогда тени будут перекрывать, как вы хотите. Поэтому вам необходимо смоделировать ячейки: создать сетку для контейнера, каждая кнопка будет находиться в ячейке 0,0, но с соответствующим смещением Margin x, y, чтобы не перекрывать другие кнопки. Создавайте смещения во время выполнения, обновляйте их при изменении размера родителя, и вы получите его.