2

在 Visual studi0 2012 中制作的 Silverlight 5 应用程序有一个奇怪的问题。

问题:

使用 Silverlight 5 的 Expression Blend Preview,我成功地将情节提要添加到视图中,并使用ControlStoryboardAction在网格加载时触发情节提要。这将在 Expression Blend 中呈现良好,但在 VS2012 中查看 xaml 它将失败并出现以下错误:

The type 'ControlStoryboardAction' from assembly 'Microsoft.Expression.Interactions' is built with an older version of the Blend SDK, and is not supported in a Silverlight 5 project.

应用程序在浏览器中构建并运行良好,即故事板被触发,但是VS2012会抛出错误仍然很烦人。

我看到这似乎是一个程序集版本问题,但一切都是为 Silverlight 5 设置的。

以下是有问题的xaml:

<Grid x:Name="LayoutRoot" Background="White">
    <i:Interaction.Triggers>
        <i:EventTrigger>
            <ei:ControlStoryboardAction x:Name="GridLoadedTriggerEvent" Storyboard="{StaticResource StoryBoardWindowFadeIn}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
    <Grid.RowDefinitions>
        <RowDefinition Height="60" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    ...Excluded text...
</Grid>

问题在于使用:

<ei:ControlStoryboardAction x:Name="GridLoadedTriggerEvent" Storyboard="{StaticResource WindowFadeIn}"/>

从命名空间:xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"

是否有人对为什么似乎存在此版本问题有解决方案或解释。

谢谢

4

2 回答 2

1

我无法重现这个确切的问题(在 Blend Preview 中工作正常,能够在浏览器中运行和构建,但在 VS 2012 中显示 XAML 错误),但是当我引用该\Silverlight\v4.0\版本时,我在 VS 2012 中确实遇到了类似的错误的版本Microsoft.Expression.Interactions.dll与 的\Silverlight\v5.0\版本结合使用System.Windows.Interactivity.dll

那么您能否验证这两个 DLL:

Microsoft.Expression.Interactions.dll

System.Windows.Interactivity.dll

都引用位于 的 Blend Silverlight 5.0 程序集C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\Silverlight\v5.0\Libraries

如果不是,请尝试从 v5.0 版本中删除并重新添加这些项目。

于 2012-11-16T18:26:40.180 回答
0

我有一个类似的问题——可能是同一个问题——我的问题是System.Windows.Interactivity.dll.

我们在我的项目中使用MVVM Light,显然它提供了自己的版本System.Windows.Interactivity.dll。据我所知,版本信息是正确的,但 VS2012 错误仍然存​​在。

一旦我删除并重新添加了参考(与 Scott Koland 11 月 16 日的注释相同的位置),一切都清理干净了,现在可以正常工作了。

于 2013-03-27T06:20:45.323 回答