Окно перестает менять свой размер, если выставлены ActualWidth / ActualHeight. При ручном изменении размеров именно это и происходит: ActualWidth/ActualHeight'у присваиваются значения.
Чтобы окно принимало размер содержимого, нужно чтобы wnd.Width & wnd.Height были равны Auto.
Попробуй подписаться на событие ресайза окно и там делать так: this.Width = this.Height = Double.NaN.
ЗЫ. проверить сейчас не могу, возможно будут бока во время ресайза