【问题标题】:Can't use silverlight namespace不能使用 silverlight 命名空间
【发布时间】:2010-08-18 15:46:38
【问题描述】:

每当我尝试在我的 XAML 中引用以下命名空间时,代码都会编译并且项目会启动,但 InitializeComponent 方法会引发错误。这是 XAML 参考:

xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"

这里是 ExtendedVisualStateManager 的使用

<ei:ExtendedVisualStateManager/>

错误是这样的:

The type 'ExtendedVisualStateManager' was not found because 'http://schemas.microsoft.com/expression/2010/interactions' is an unknown namespace. [Line: 19 Position: 37]

我需要使用一个新的命名空间来使用这个控件吗?

【问题讨论】:

    标签: silverlight xaml reference


    【解决方案1】:

    这里有一些事实。

    1. Microsoft.Expression.Interactions.dll 版本 4.0.5.0 包含命名空间 Microsoft.Expression.Interactivity.Core
    2. Microsoft.Expression.Interactivity.Core 包含ExtendedVisualStateManager 类型。
    3. Microsoft.Expression.Interactions.dll 版本 4.0.5.0 带有一个 XmlnsDefinition,它将 URL“http://schemas.microsoft.com/expression/2010/interactions”映射到命名空间 Microsoft.Expression.Interactivity.Core

    因此,引用 Microsoft.Expression.Interactions.dll 版本 4.0.5.0 的项目可以包含使用 xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" 的 Xaml,然后可以包含 ei:ExtendedVisualStateManager

    您会注意到我重复了几次版本号。如果您确实在 Silverlight 4 项目中引用了交互 dll,但您的代码不起作用,则可能是错误的版本。但是在那种情况下,丹的回答应该仍然有效。

    【讨论】:

      【解决方案2】:

      确保您的 Silverlight 应用程序具有对 Microsoft.Expression.Interactions 程序集的引用。

      <UserControl
          xmlns:ei="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly=Microsoft.Expression.Interactions"
          ...other namespaces... />
          <VisualStateManager.CustomVisualStateManager>
              <ei:ExtendedVisualStateManager/>
          </VisualStateManager.CustomVisualStateManager>
      </UserControl>
      

      【讨论】:

      • 我已经引用了该程序集并尝试使用您引用程序集的样式,但抛出了一个新错误:找不到类型“ExtendedVisualStateManager”,因为 'clr-namespace:Microsoft.Expression.Interactivity .Core;assembly=Microsoft.Expression.Interactions' 是一个未知的命名空间。 [行:19 位置:37]
      【解决方案3】:

      根据其他答案,我的一切都是正确的,和你一样,问题仍然存在。它在我的项目中的用户控件上运行时失败(并且该项目确实引用了Microsoft.Expression.Interactions)。

      但是,该用户控件正在另一个项目中的表单上使用。一旦我将Microsoft.Expression.Interactions 的引用添加到外部项目中,运行时错误就解决了。我没有动态加载程序集,所以我不能 100% 确定为什么会出现问题。

      【讨论】:

        【解决方案4】:

        我认为您应该查看项目的属性。找到引用(Microsoft.Expression.Interactions 或/和您可能使用的其他“Expression”程序集,并将“Copy Local”属性设置为 TRUE,然后重试。

        【讨论】:

          【解决方案5】:

          没有一个答案能解决我这个令人费解的问题。

          显然我需要Microsoft Expression Blend SDK for Silverlight 4

          安装它已经解决了这个问题。

          【讨论】:

          • 好吧,如果您认为答案不好,您可以不加 -1 发​​表评论。无论如何,我发现这里的所有答案都非常奇怪,而且评分最高的答案对我来说毫无用处,根本不会导致解决方案。
          猜你喜欢
          • 2015-07-30
          • 2013-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多