在一个库项目中,我无法添加对系统窗口控件命名空间的引用。

6

我正在尝试在一个库项目中添加对命名空间System.Windows.Controls的引用,但是我在列表中找不到它。有人知道发生了什么吗?我正在使用4.0版本。谢谢。


在哪个列表中?有许多列表可以查看。 - BoltClock
3个回答

17
你需要学会区分程序集名称和命名空间,它们之间不是一一对应的。
如果你想访问例如System.Windows.Controls.Button,你需要引用PresentationFramework程序集,这个程序集似乎包含了大部分MSDN文档中列出的System.Windows.Controls命名空间下的类。
多个程序集可以为单个命名空间提供类/控件。并且并不要求所有(甚至大多数)来自一个程序集的类都驻留在单个命名空间中。

实际上,我的问题比那个要大一点。 我有一个类库项目。在这个项目中,我有多个用户控件。这些控件使用一个继承自“Control”的类“A”。 我正在尝试为所有这些用户控件制作合并字典。 在这个字典中存在的样式使用了类“A”。 我在加载此模板时遇到了运行时问题,因为它无法创建类型“A”。我检查了问题,并发现我必须将System.Windows.Controls引用添加到项目中,但我在浏览器中没有找到它。 - Ziad
1
@Ziad - 仍然,我认为你问题的核心,以及你需要的答案,是你需要添加一个对PresentationFramework的引用。 如果不是这样,你需要编辑你的问题并提供更多关于你所遇到的问题的信息。 - Damien_The_Unbeliever
1
@Ziad - 没有一个名为System.Windows.Controls的程序集。(至少在框架中没有) - Damien_The_Unbeliever
@Damien_The_Unbeliver 我认为这是一个更好的解释,但我正在尝试一个桌面应用程序,我遇到了同样的问题。 http://connect.microsoft.com/VisualStudio/feedback/details/605907/silverlight-4-xamlparseexception-failed-to-create-a-system-type-from-the-text-local-customerentity - Ziad
@Ziad - 如果你在使用Silverlight(你的问题只说了WPF),那么大多数控件都在System.Windows程序集中(注意,仍不是System.Windows.Controls)。 - Damien_The_Unbeliever

0

System.Windows随附于Silverlight工具包中。希望这能有所帮助。


0
如果您正在使用VS 2010: 请检查您的项目设置:右键单击您的项目,选择“属性”,然后选择“应用程序”选项卡。如果“目标框架”下拉菜单是“.Net Framework 4 Client Profile”,则必须将其更改为“.net Framework 4”。
编辑:我猜所需的程序集是“PresentationFramework.dll”(请参见msdn class info about Usercontrol)。这是我的错误,我只是想通常会犯这个错误。

我非常肯定 System.Windows.Controls 在 .NET 客户端配置文件中是可用的。不过,值得一试。 - BoltClock
我的错,我编辑了我的答案 - 我只是认为它会是Clientprofile并在本地进行了测试。由于这是我经常犯的一个错误,我认为这可能是问题所在。由于我不开发桌面应用程序,我对命名空间/程序集不是专家。但是在怀疑时,MSDN可以提供帮助。 - Bernhard Kircher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接