Я пытаюсь пометить новый элемент управления в области приложения, который программно добавляется после удаления существующих элементов управления. Мой код выглядит следующим образом:Использование анимации раскадровки на программно добавленном элементе управления
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();
}
Однако, когда я запускаю этот код, я получаю сообщение об ошибке «Нет применимое имя не существует, чтобы разрешить имя„settingsPane“.»
Что я могу сделать неправильно? Я довольно уверен, что я зарегистрировал все правильно :(
У меня возникли проблемы с этим ответом, потому что мы нацелены на .NET 3.0; даже если SetTarget был добавлен в .NET 3.0 SP2, это доступно только с установщиком .NET 3.5; поэтому, если вы хотите поддерживать .NET 3.0 SP1, мне нужно было использовать решение Carlos для перехода на «sb.Begin (this)». –
[Вот вопрос] (http://stackoverflow.com/questions/13217221/settarget-vs-registername-settargetname), который иллюстрирует случай, когда 'SetTarget' не работает, а комманда' RegisterName'/'SetTargetName' необходимо. – dharmatech
Отличная работа ... Хорошо –