【问题标题】:Getting the exception "The type 'Expander' was not found"获取异常“找不到类型'扩展器'”
【发布时间】:2011-03-23 13:23:03
【问题描述】:

我的 Silverlight 应用程序中有这样的东西:

<navigation:Page x:Class="PPCa.Modules.ProjectManager.Client.Views.ProjectDetailView" 
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                 xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" 
                 xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit" 
                 xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
                 xmlns:controls="clr-namespace:PPCa.Common.Infrastructure.Controls;assembly=PPCa.Common.Infrastructure"
                 xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" 
                 mc:Ignorable="d"
                 d:DesignHeight="768"
                 d:DesignWidth="1024"
                 Title="ProjectDetailView Page">
    <toolkit:Expander>
    </toolkit:Expander>
</navigation:Page>

它编译得很好,但我得到了异常“找不到类型'Expander'。”当我运行应用程序并导航到页面时。

编辑:

我尝试将工具包命名空间更改为:

xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"

现在它仍然可以编译,我得到了异常:

找不到类型“扩展器” 因为 'clr-命名空间:System.Windows.Controls;程序集=System.Windows.Controls.Toolkit' 是一个未知的命名空间。

进一步修改:

我所要做的就是为它们命名。奇怪的是,给每个 Expander 控件起一个名字就解决了这个问题。有人知道为什么会这样吗?

【问题讨论】:

  • 您是否在项目中添加了对“windows.controls.toolkit.dll”的引用?
  • 当您输入工具包时,智能感知是否会向您显示某些内容:?
  • @Chris,是的。 @Felice,是的。

标签: silverlight silverlight-toolkit expander


【解决方案1】:

由于您的引用看起来不错,请通过在对象浏览器中查看对象来仔细检查 Expander 类是否存在于 System.Windows.Controls 命名空间中。如果是这样,请尝试删除引用并重新编译。您应该收到一个错误(这是一件好事)。如果您不这样做,则某处必须有其他参考。删除所有引用以引发编译错误后,读取对 System.Windows.Controls.Toolkit dll 的引用。它应该是 v2.0.50727,如果一切(工具包、SDK、Silverlight)都安装正确,则可以从 GAC 获得。

【讨论】:

  • 实际上,我所要做的就是为它们命名。奇怪的是,给每个Expander 控件起一个名字就解决了这个问题。有谁知道为什么会这样?我不喜欢事情只是在不了解它们为什么起作用以及相反为什么它们以前不起作用的情况下起作用。
  • 嗯。奇怪的。我不知道为什么给他们一个名字会解决问题。
  • 哇,太奇怪了。我还在我的数据表单中添加了一个 x:Name 属性,它有完全相同的问题并且运行良好。
【解决方案2】:

我在使用 C1Expander 类时遇到了同样的问题。给控件命名对我不起作用。最初,我使用了命名空间

xmlns:c1Ext="clr-namespace:C1.Silverlight.Extended;assembly=C1.Silverlight.Extended.5"

使用不同的命名空间名称

xmlns:ComponentOneExtensions="clr-namespace:C1.Silverlight.Extended;assembly=C1.Silverlight.Extended.5"

改为修复它。请注意,只有名称改变了,而不是 clr-namespace 的东西。不知道为什么...

【讨论】:

    【解决方案3】:

    刚刚添加了一个 x:Name"controlName" 来控制其他程序集和宾果游戏。它工作得很好。任何人都可以解释这种行为吗?

    【讨论】:

    • 只是想确认我们的控件在另一个程序集中存在同样的问题,并且通过给控件命名也解决了问题。所以谢谢......但如果有人知道答案,我想了解为什么这可以解决问题。
    【解决方案4】:

    DataGrid 有类似的问题。添加 x:Name 也适用于我。

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      相关资源
      最近更新 更多