GridSplitter, WebBrowser и WPF

Сегодня клиент словил надоедливый баг, от которого мне сразу захотелось начать плеваться ядом в сторону WPF, но прикинув объём писанины и примеров, необходимый для того, чтобы это выглядело убедительно — я решил просто записать описание бага и его решение для будущих поколений.

Проявляется он следующим образом. Если потянуть за GridSplitter и подёргать мышкой туда-сюда — он случайным образом может: улететь вверх, улететь вниз, остановиться и не двигаться. Об этом баге, как оказалось Microsoft неоднократно писали, но воз и ныне там. В Expression Blend, кстати говоря, этот сплиттер заедает тоже.

В качестве решения предлагается установить свойство ShowsPreview в «True». Тогда граница сдвинется только после того как пользователь отпустит кнопку мыши, а до этого момента будет отображаться «тень».

Но это решение не подошло, потому что одним из контролов, который должен подвергаться изменению размера, является WebBrowser. WebBrowser это всего лишь враппер над контролом из WinForms, поэтому он всегда рисуется поверх WPF контролов. А это означает, что «тень» будет рендериться под WebBrowser. Что, конечно же, неприемлемо.

Выходом из ситуации явился найденный на просторах интернета реализованный кем-то GridSplitter.