É possível estilizar o conteúdo de um DockPanel para preencher o último filho * visible *?

Considere este snippet XAML ...

<DockPanel x:Name="TestDockPanel">

    <Button x:Name="RightButton" Content="Right" DockPanel.Dock="Right" />
    <Button x:Name="FillButton" Content="Fill" />

</DockPanel>

Como está escrito, o DockPanel irá colocar o 'RightButton' à direita, então preencha o resto da área com 'FillButton' assim ...

Estamos tentando encontrar uma maneira de estilizá-lo para que, quando 'FillButton' tiver sua visibilidade alterada para 'Recolhido', 'RightButton' agora preencha a área, assim ...

A única maneira de sabermos como fazer isso é remover fisicamente 'FillButton' dos filhos de 'TestDockPanel', mas isso exige code-behind, o que estamos tentando evitar.

Atualizar

Abaixo em uma resposta, eu coloquei uma solução baseada em uma subclasse. No entanto, eu estou deixando isso em aberto desde que eu gostaria de algo que pode ser usado comqualquer DockPanel (ou outra subclasse) e, preferencialmente, aplicado por meio de um estilo ou comportamento anexado. Além disso, para ser claro, um requisito da solução é que ela seja baseada em um DockPanel, não em uma grade ou outro painel.

questionAnswers(1)

yourAnswerToTheQuestion