Я полагаю, что проблема вызвана обработкой в вашем обработчике Window.Loaded. Анимация не будет работать, пока ваш обработчик Window.Loaded не завершит работу. Я смог воссоздать вашу проблему, выполнив следующее:
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Thread.Sleep(1000);
}
}
}
Экран будет белым в течение 1000 мс, потому что анимация не будет работать, пока не закончится сон. Если вы уберете вызов Thread.Sleep (), результат будет таким, как вы ожидаете. Я предполагаю, что вы выполняете довольно много работы в своем обработчике Loaded, и анимация задерживается.
Кстати, вот MainWindow.xaml, почти такой же, как у вас:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" x:Name="Window">
<Window.Triggers>
<EventTrigger RoutedEvent="Window.Loaded">
<BeginStoryboard>
<Storyboard Name="FormFade">
<DoubleAnimation Name="FormFadeAnimation"
Storyboard.TargetName="Window"
Storyboard.TargetProperty="(Window.Opacity)"
From="0.0" To="1.0" Duration="0:0:5"
AutoReverse="False" RepeatBehavior="1x"
/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Window.Triggers>
<Grid>
<TextBlock>asdf</TextBlock>
</Grid>
</Window>