我正在尝试淡入我的应用程序的"app"区域的新控件,该区域在删除现有控件后以编程方式添加.我的代码看起来像这样:
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'."
我可能做错了什么?我很确定我已经正确注册了一切:(
我不会为NameScopes等烦恼,而宁愿使用Storyboard.SetTarget.
var b = new Button() { Content = "abcd" }; stack.Children.Add(b); var fade = new DoubleAnimation() { From = 0, To = 1, Duration = TimeSpan.FromSeconds(5), }; Storyboard.SetTarget(fade, b); Storyboard.SetTargetProperty(fade, new PropertyPath(Button.OpacityProperty)); var sb = new Storyboard(); sb.Children.Add(fade); sb.Begin();
我在begin方法中使用this作为参数解决了问题,请尝试:
sb.Begin(this);
因为名称已在窗口中注册.
我同意,在这种情况下,名称范围可能是错误的.使用SetTarget而不是SetTargetName更简单,更容易.
如果它可以帮助其他任何人,这就是我用来突出表格中特定单元格的内容,其突出显示无效.添加新答案时,它有点像StackOverflow高亮显示.
TableCell cell = table.RowGroups[0].Rows[row].Cells[col]; // The cell contains just one paragraph; it is the first block Paragraph p = (Paragraph)cell.Blocks.FirstBlock; // Animate the paragraph: fade the background from Yellow to White, // once, through a span of 6 seconds. SolidColorBrush brush = new SolidColorBrush(Colors.Yellow); p.Background = brush; ColorAnimation ca1 = new ColorAnimation() { From = Colors.Yellow, To = Colors.White, Duration = new Duration(TimeSpan.FromSeconds(6.0)), RepeatBehavior = new RepeatBehavior(1), AutoReverse = false, }; brush.BeginAnimation(SolidColorBrush.ColorProperty, ca1);