Ich versuche ein neues Steuerelement in den Anwendungsbereich meiner Anwendung einzufügen, das programmgesteuert hinzugefügt wird, nachdem die vorhandenen Steuerelemente entfernt wurden. Mein Code sieht wie folgt aus:Verwenden einer Storyboard-Animation für ein programmgesteuert hinzugefügtes Steuerelement
void settingsButton_Clicked(object sender, EventArgs e)
{
ContentCanvas.Children.Clear();
// Fade in settings panel
NameScope.SetNameScope(this, new NameScope());
SettingsPane s = new SettingsPane();
s.Name = "settingsPane";
this.RegisterName(s.Name, s);
this.Resources.Add(s.Name, s);
Storyboard sb = new Storyboard();
DoubleAnimation settingsFade = new DoubleAnimation();
settingsFade.From = 0;
settingsFade.To = 1;
settingsFade.Duration = new Duration(TimeSpan.FromSeconds(0.33));
settingsFade.RepeatBehavior = new RepeatBehavior(1);
Storyboard.SetTargetName(settingsFade, s.Name);
Storyboard.SetTargetProperty(settingsFade, new PropertyPath(UserControl.OpacityProperty));
ContentCanvas.Children.Add(s);
sb.Children.Add(settingsFade);
sb.Begin();
}
Allerdings, wenn ich diesen Code ausführen, erhalte ich die Fehlermeldung „Keine gültigen Namensbereich existiert der Name‚settingsPane‘zu lösen.“
Was mache ich möglicherweise falsch? Ich bin mir ziemlich sicher, dass ich alles richtig registriert habe :(
Ich habe Probleme mit dieser Antwort bekommen, weil wir .NET 3.0 zielen; Obwohl SetTarget zu .NET 3.0 SP2 hinzugefügt wurde, ist dies nur mit dem .NET 3.5-Installationsprogramm möglich. Wenn Sie also .NET 3.0 SP1 unterstützen möchten, musste ich die Lösung von Carlos verwenden, um zu "sb.Begin (this)" zu wechseln. –
[Hier ist eine Frage] (http://stackoverflow.com/questions/13217221/settarget-vs-registername-settargetname), die einen Fall veranschaulicht, in dem 'SetTarget' nicht funktioniert und das' RegisterName'/'SetTargetName'-Kombinationsfeld ist notwendig. – dharmatech
Toller Job ... Gut –