¿Es posible diseñar el contenido de un DockPanel para llenar el último hijo * visible *?

Considere este fragmento de código XAML ...

<DockPanel x:Name="TestDockPanel">

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

</DockPanel>

Como está escrito, el DockPanel diseñará 'RightButton' a la derecha, luego llenará el resto del área con 'FillButton' como este ...

Estamos tratando de encontrar una manera de darle un estilo para que cuando se cambie la visibilidad de 'FillButton' a 'Collapseed', 'RightButton' debería llenar el área, así ...

La única forma en que sabemos cómo hacer esto es eliminar físicamente 'FillButton' de los hijos de 'TestDockPanel', pero eso requiere un código subyacente, que estamos tratando de evitar.

Actualizar

Abajo en una respuesta, he planteado una solución basada en una subclase. Sin embargo, estoy dejando esto abierto ya que me gustaría algo que pueda usarse conalguna DockPanel (u otra subclase) y se aplica preferentemente a través de un estilo o un comportamiento adjunto. Además, para que quede claro, un requisito de la solución es que debe basarse en un DockPanel, no en una cuadrícula u otro panel.

Respuestas a la pregunta(1)

Su respuesta a la pregunta