Я использую # 2 с небольшим изменением
if (condition1)
{
doStuff();
} else
{
doSomethingElse();
}
По по умолчанию DockPanel последний элемент заполнит оставшуюся доступную область содержимого.
Если вы установите LastChildFill = "False"
в DockPanel, вы увидите ожидаемое поведение. Вы также можете установить VerticalAlignment = "Bottom"
в TextBlock.