Лучше сразу делать правильно.
1) Ваш подход с Content.Height неверен. Если Height не задан, то есть равен NaN, получим RuntimeException.
2) Вместо того, чтобы писать стиль внутрь элемента сохраните его в Resources для данного окна/страницы.
3) Переопределите ContentTemplate, чтобы анимация работала для всех случаев.
Теперь о том, почему не работает.
Изначально всё работает таким образом. Свойство Visibility нашего ContentPresenter установлено в значение Collapsed. Раскрытие производится следующим триггером.
<Trigger Property="IsExpanded" Value="true">
<Setter Property="Visibility" TargetName="ExpandSite" Value="Visible"/>
</Trigger>
Для того, чтобы исправить ситуацию немного перепишем ControlTemplate.
Для начала удалим свойство Visibility.
После этого, добавим внутрь следующий блок:
<ContentPresenter.LayoutTransform>
<ScaleTransform ScaleX="1" ScaleY="0"/>
</ContentPresenter.LayoutTransform>
И в завершении, заменим вышеуказанный триггер на эти:
<EventTrigger RoutedEvent="Expander.Expanded">
<BeginStoryboard>
<Storyboard Storyboard.TargetName="ExpandSite" Storyboard.TargetProperty="LayoutTransform.ScaleY">
<DoubleAnimation To="1" Duration="0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="Expander.Collapsed">
<BeginStoryboard>
<Storyboard Storyboard.TargetName="ExpandSite" Storyboard.TargetProperty="LayoutTransform.ScaleY">
<DoubleAnimation To="0" Duration="0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
Пример:
pastebin.com/FmGAVbA5