Also dein Problem ist da vor allem ein Denkfehler. Dein Programm wartet nach "BeginAnimation" nicht bis die Adnimation zu Ende ist, sondern läuft sofort weiter. Bei dem Durchlauf ist "Value" natürlich noch 0, danach wird die Methode nie wieder aufgerufen und damit auch der Vergleich nie wieder durchgeführt.
Für eine Lösung habe ich jetzt die Dokumentation gequält, da ich mit den Animationen auch noch nie gearbeitet habe.
Code:
private void createtimer()
{
splashProgress.IsIndeterminate = false;
Duration dur = new Duration(TimeSpan.FromSeconds(10));
DoubleAnimation dba = new DoubleAnimation(200.0, dur);
dba.Completed += () => {
timer.Stop();
MainWindow mw = new MainWindow();
this.Hide();
mw.Show();
};
splashProgress.BeginAnimation(ProgressBar.ValueProperty, dba);
}
(Eventuell auch mit Tippfehlern, habe den Code hier im Browser geschrieben)
Den Timer verwendest du nicht, den kannst du eigentlich auch entfernen.