By default a DockPanel's last item will fill the remaining content area available.
If you set LastChildFill="False" on the DockPanel, you'll see the behavior you are expecting. You can also set VerticalAlignment="Bottom" on the TextBlock.
LastChildFill="False"
VerticalAlignment="Bottom"