Estoy tratando de desvanecerme en un nuevo control en el área de la "aplicación" de mi aplicación que se agrega programáticamente después de que se eliminen los controles existentes. Mi código es el siguiente:Usando una animación Storyboard en un control agregado mediante programación
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();
}
Sin embargo, cuando ejecuta este código, se produce el error "No existe un ámbito de nombres aplicable para resolver el nombre 'settingsPane'."
¿Qué estoy haciendo mal? Estoy bastante seguro de que me he registrado todo correctamente :(
Tuve problemas con esta respuesta porque estamos apuntando a .NET 3.0; aunque SetTarget se haya agregado a .NET 3.0 SP2, esto solo está disponible con el instalador de .NET 3.5; así que si quieres soportar .NET 3.0 SP1, necesitaba usar la solución de Carlos para cambiar a "sb.Begin (this)". –
[Aquí hay una pregunta] (http://stackoverflow.com/questions/13217221/settarget-vs-registername-settargetname) que ilustra un caso donde 'SetTarget' no funciona y el combo' RegisterName'/'SetTargetName' es necesario. – dharmatech
Buen trabajo ... Bueno –