【问题标题】:Silverlight 4: How to reference class from another assemblySilverlight 4:如何从另一个程序集中引用类
【发布时间】:2010-09-08 00:52:37
【问题描述】:

在 SquadView 页面 (VfmElitaSilverlightClientView.Pages.SquadView) 的 XAML 文件中,我正在使用自定义值转换器。 XAML 文件位于“VfmElitaSilverlightClientView”命名空间中。为转换器创建了单独的文件夹,它位于“VfmElitaSilverlightClientView.Converter”命名空间中(在同一个程序集中)。要使用转换器,在 XAML 中使用以下代码:

xmlns:Converter="clr-namespace:VfmElitaSilverlightClientView.Converter"
...
<NavigationControls:Page.Resources>
    <Converter:BooleanToVisibilityConverter x:Key="resourceBooleanToVisibilityConverter" />
</NavigationControls:Page.Resources>

一切正常。在这里,我想将转换器类移动到自定义的单独程序集“SilverlightCommonView”中,并且类本身将位于“SilverlightCommonView.Converter”命名空间中。 XAML 代码更改为以下内容:

xmlns:Converter="clr-namespace:SilverlightCommonView.Converter;assembly=SilverlightCommonView" 
...
<NavigationControls:Page.Resources>
    <Converter:BooleanToVisibilityConverter x:Key="resourceBooleanToVisibilityConverter" />
</NavigationControls:Page.Resources>

在这种情况下,当应用程序抛出以下异常时:

一个未处理的异常('Unhandled Silverlight 应用程序中的错误... 代码:4004 类别: ManagedRuntime 错误消息: Microsoft.Practices.Unity.ResolutionFailedException: 依赖解析失败,type="VfmElitaSilverlightClientView.Pages.SquadView", 名称=“(无)”。 发生异常时:调用构造函数 VfmElitaSilverlightClientView.Pages.SquadView()。例外是:XamlParseException - 找不到类型“BooleanToVisibilityConverter”,因为 'cl ...:SilverlightCommonView.Converter;assembly=SilverlightCommonView' 是一个未知的命名空间。

不清楚为什么指定的命名空间是未知的(那些程序集被当前的引用)。

请指教。

欢迎提出任何想法。

【问题讨论】:

  • 仅供参考,您的第二个示例 XAML 是错误的,尽管我怀疑在问这个问题时这是一个复制粘贴错误,因为您有一个异常,似乎表明您在实际应用程序中做对了。您使用的是“Converter:”而不是“CommonConverter2:”

标签: silverlight silverlight-4.0 assemblies


【解决方案1】:

我敢打赌,您的应用程序项目中没有对您的共享/公共项目的程序集引用。

【讨论】:

  • 你几乎是对的。没有引用,但不是在包含视图类的程序集中,而是在引用“视图”程序集的应用程序中。当对“SilverlightCommonView”的引用添加到“应用程序”项目中时 - 问题已解决。再次感谢,您的回答让我对 XAML 源代码更有信心。
  • 不,我就是这么说的。 “...从您的应用程序到您的共享/公共项目...”。换个说法,您的应用程序需要对公共项目的引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多