每当我尝试在我的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]
我需要使用新的命名空间来使用此控件吗?
答案 0 :(得分:6)
以下是一些事实。
Microsoft.Expression.Interactivity.Core
。Microsoft.Expression.Interactivity.Core
包含ExtendedVisualStateManager
类型。XmlnsDefinition
,用于将网址“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,但您的代码不起作用,则可能是错误的版本。但是在那种情况下,Dan的答案应该仍然有效。
答案 1 :(得分: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>
答案 2 :(得分:2)
根据其他答案,我认为一切都是正确的,就像你一样,问题仍然存在。它在运行时在我的项目中的用户控件上失败了(该项目确实引用了Microsoft.Expression.Interactions
)。
但是,该用户控件正在另一个项目的表单上使用。一旦我将Microsoft.Expression.Interactions
的引用添加到外部项目,就解决了运行时错误。我没有动态加载程序集,因此我不能100%确定为什么这是一个问题。
答案 3 :(得分:1)
我认为您应该查看项目的属性。找到您可能使用的引用(Microsoft.Expression.Interactions或/和其他“Expression”程序集,并将“Copy Local”属性设置为TRUE并再次尝试。
答案 4 :(得分:-1)