Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个silverlight动画会使整个布局消失?_Silverlight_Animation - Fatal编程技术网

为什么这个silverlight动画会使整个布局消失?

为什么这个silverlight动画会使整个布局消失?,silverlight,animation,Silverlight,Animation,我开始看Silverlight,我想从小处做起。我看过的所有示例都使用了关键帧动画,所以我想尝试不同类型的动画。我对从代码中执行动画也有点不熟悉,所以我决定也尝试一下。我的最终目标是制作某种动画面板,但现在我只需一个按钮就可以开始小制作: <UserControl x:Class="TestSilverlight.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x=

我开始看Silverlight,我想从小处做起。我看过的所有示例都使用了关键帧动画,所以我想尝试不同类型的动画。我对从代码中执行动画也有点不熟悉,所以我决定也尝试一下。我的最终目标是制作某种动画面板,但现在我只需一个按钮就可以开始小制作:

<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>