如何解决DoubleAnimation不起作用
|//Create my grid and child controls
var layoutRoot = new System.Windows.Controls.Grid
{
Background = new SolidColorBrush(Colors.Blue),Name = \"layaoutRoot1\",Height = 400.0,VerticalAlignment = System.Windows.VerticalAlignment.Stretch,HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch
};
layoutRoot.ColumnDefinitions.Add(new ColumnDefinition()
{
Width = new GridLength(1,GridUnitType.Auto)
});
layoutRoot.ColumnDefinitions.Add(new ColumnDefinition()
{
Width = new GridLength(1,GridUnitType.Star)
});
var myImage = new Image
{
Source = new BitmapImage(new Uri(@\"C:\\Path\\to\\Image\\img.png\")),Stretch = Stretch.UniformToFill,Margin = new Thickness(3),Width = 50.0,Height = 50.0,};
var textBlocklbl = new TextBlock
{
Text = \"Label Here\",FontFamily = new FontFamily(\"Arial\"),FontSize = 14.0,FontWeight = FontWeights.Bold,Margin = new Thickness(3)
};
layoutRoot.Children.Add(myImage);
layoutRoot.Children.Add(textBlocklbl);
System.Windows.Controls.Grid.SetColumn(myImage,0);
System.Windows.Controls.Grid.SetColumn(textBlocklbl,1);
grid1.Children.Add(layoutRoot); //grid1 is placed on the MainWindow
Storyboard myStorboard = new Storyboard();
DoubleAnimation myDoubleAnimation = new DoubleAnimation();
myDoubleAnimation.From = 0.0;
myDoubleAnimation.To = 300.0;
myDoubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(3));
myDoubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
//myDoubleAnimation.AutoReverse = true;
myStorboard.Children.Add(myDoubleAnimation);
Storyboard.SetTargetName(myDoubleAnimation,layoutRoot.Name);
Storyboard.SetTargetProperty(myDoubleAnimation,new PropertyPath(System.Windows.Controls.Grid.HeightProperty));
myStorboard.Begin();
解决方法
您的动画找不到动画源。除非将动画放入逻辑树中,否则设置
TargetName
将不起作用。使用StoryBoard.SetTarget(layoutRoot)
代替StoryBoard.SetTargetName(layoutRoot.Name)
。
这是您可以解决的方法:
1)首先,您可以调试它。您只需在Visual Studio中以调试模式启动代码,并继续查看Output
窗口,直到在那里看到错误。我相信您很快就会在这里看到-然后可以对其进行修复。您仍然有可能看不到任何错误。
2)其次,您应该尝试再次调试它。获取您的代码,将其粘贴到干净的解决方案中。还是不行?大!继续删除与问题无关的部分代码。 VerticalAlighnment
,HorizontalAlignment
,您真的需要它们吗?没有这些属性,该问题是否可以重现?删除它们。更少的代码-更易于调试。好的,最终您有10行代码,但仍然无法正常工作。从正在运行的MSDN中获取一个样本,该样本看起来与您越近越好,并找到差异。您甚至可以用MSDN替换部分代码,以查看它是否有帮助。
3)好吧,它仍然不起作用,您还没有找到任何示例,也没有办法对其进行调试-您需要社区帮助。正确提问。如果您是专业开发人员,那么您可能已经看过很多次了-用户只提出了一条语句it doesn\'t work
。您必须自己完全测试/调试/修复它。但是这些是您的客户,他们最终会向您付款。这是一个自由的社区,仅代表我们的利益而驱动。如果我们不愿意回答您的问题-我们将永远不会回答。因此,提出一个值得回答的问题。粘贴无效的代码是不够的。您还应该提供有关无效部分的信息。以及您尝试自己修复的内容。如果我们认为您正在尝试利用我们-我们不会回答您的问题。
谢谢你的时间。
更新好,只是尝试调试它。就像我说的那样。您的代码给出了一个例外,即找不到layoutRoot
。确切的消息是:No applicable name scope exists to resolve the name \'layaoutRoot1\'.
。就像您说的那样,您只需要在VS中运行自己的代码即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。