为什么这个silverlight动画会使整个布局消失?
我开始看Silverlight,我想从小处做起。我看过的所有示例都使用了关键帧动画,所以我想尝试不同类型的动画。我对从代码中执行动画也有点不熟悉,所以我决定也尝试一下。我的最终目标是制作某种动画面板,但现在我只需一个按钮就可以开始小制作:为什么这个silverlight动画会使整个布局消失?,silverlight,animation,Silverlight,Animation,我开始看Silverlight,我想从小处做起。我看过的所有示例都使用了关键帧动画,所以我想尝试不同类型的动画。我对从代码中执行动画也有点不熟悉,所以我决定也尝试一下。我的最终目标是制作某种动画面板,但现在我只需一个按钮就可以开始小制作: <UserControl x:Class="TestSilverlight.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=
<UserControl x:Class="TestSilverlight.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300" Background="Azure">
<Grid x:Name="LayoutRoot" Background="Azure">
<Button x:Name="btnClick" Content="Animate me!" Height="48" Width="96" Click="btn_Click">
</Button>
</Grid>
</UserControl>
当我点击按钮时,我期望看到它向右滑动50个单位3次。实际情况是整个布局消失,就像背景色和按钮消失一样
如果我重写按钮的代码以RenderTransform开始,一切都会正常
<Button x:Name="btnClick" Content="Animate me!" Height="48" Width="96" Click="btn_Click">
<Button.RenderTransform>
<TranslateTransform />
</Button.RenderTransform>
</Button>
第一个案例中发生了什么导致了失败?我是否犯了根本性的错误?我上次与Silverlight合作是在2008年初。在Silverlight的Beta版中,有时出现任何错误时,整个布局都消失了(保持为白色和空),而不是出现错误消息 不确定当前版本中是否仍然存在这种情况。您是否可以(或者您是否已经)逐步检查代码以检查是否引发异常。。。或者以编程方式捕获它并呈现某种错误消息 希望我能帮你一点忙
Matthias我一直在研究几乎相同的事情,我读过的各种资料表明,您不能以编程方式添加故事板。尝试将它添加到XAML中,然后您可以在代码中修改它——只需确保对其命名,以便您可以访问它。您可能还需要在xaml中添加转换。需要记住的是,silverlight不是wpf,它很接近,但很多东西都不同——只是足以让人痛苦
<UserControl x:Class="TestSilverlight.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300" Background="Azure">
<UserControl.Resources>
<StoryBoard Name="story" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="Azure">
<Button x:Name="btnClick" Content="Animate me!" Height="48" Width="96" Click="btn_Click">
</Button>
</Grid>
您可以通过删除对“btnClick.RenderTransform==null”的检查来解决此问题,并始终创建新的TranslateTransform,或者检查“btnClick.RenderTransform is TranslateTransform”而不是null
您看到此错误的原因是,默认情况下,按钮的RenderTransform具有标识转换,而RenderTransform恰好是MatrixTransform。因此,您正试图将矩阵变换设置为动画,就像它是一个TranslateTransform一样。Bah,我本该抓住它的。谢谢
<UserControl x:Class="TestSilverlight.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300" Background="Azure">
<UserControl.Resources>
<StoryBoard Name="story" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="Azure">
<Button x:Name="btnClick" Content="Animate me!" Height="48" Width="96" Click="btn_Click">
</Button>
</Grid>