我对C#,WPF和XAML很新,所以我可能无法使用正确的术语来提出正确的问题=) 我正在尝试将自己的命名空间添加到我的xaml文件中,以便轻松使用我自己的类 - 我猜其原因是 - 我在window标签中写了以下代码:
xmlns:myns="clr-namespace:LibNameSpace"
我的window标签也以以下定义开头:
< Window x:Class="LibNameSpace.MainWindow"
我想使用LibNameSpace:Class1
类,我希望为此编写myns:Class1
。但是,该命令会导致此错误:
未定义的CLR命名空间。 'clr-namespace'URI是指未包含在程序集中的命名空间'LibNameSpace'。
我该如何解决这个问题?
答案 0 :(得分:28)
名称LibNameSpace听起来像是另一个程序集中的库。如果是这种情况,则必须添加程序集的名称:
xmlns:myns="clr-namespace:LibNameSpace;assembly=MyLibAssembly
<强>更新强>
程序集的名称可以在project-explorer中找到项目的propeties屏幕(库程序集)。通常,没有dll
- 后缀的dll的文件名也代表程序集名称。
答案 1 :(得分:10)
因为对我来说,你想要做什么并不是很清楚,这是另一个尝试:
如果MyLibAssembly
是您的应用程序的主命名空间,那么您有一个名为MainWindow
的窗口和一个名为Class1
的类,您要在MainWindow
中实例化它-class:
MyLibAssembly
- 。namcespace xmlns:local="clr-namespace:LibNameSpace
进入你的xaml。一般来说local
用于声明与当前元素相同的命名空间,在您的情况下,窗口位于。Class1
xaml中的<local:Class1/>
-tag。如果Class1不是派生自FrameworkElement或更高级别的控件,则必须将其添加到窗口的resources-section中。如果是这样,请给它一把钥匙。 <local:Class1 x:Key="KeyToYourClass"/>
也许vs不同步。单击根节点清理解决方案上的解决方案资源管理器,然后单击重建解决方案。也许这有帮助。
我希望这有帮助。如果没有,请尝试重新格式化您的问题(使用代码符号使问题更具可读性,并尝试重新措辞以更清楚地表达您的愿望)。
答案 2 :(得分:6)
使用Intellisense。就我而言,一个空间很重要。而不是
xmlns:local="clr-namespace:DataAccess;assembly=DataAccess"
我手打字
xmlns:local="clr-namespace:DataAccess; assembly=DataAccess"
注意';'
之后的空格。这产生了不同。因此,使用visual studio Intellisense,它将为您呈现正确的xaml标记。
答案 3 :(得分:4)
当我在Windows 8中遇到问题时,我找到了这个答案。我试图使用用户控件,但我遇到了一些错误。最后一个:
错误9无法将'ScrollControl'添加到集合属性'Children'中,类型必须为'UIElement'
和
错误10 XML名称空间'clr-namespace中的未知类型'ScrollControl':EventTests.Controls; assembly = EventTests,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'
ScrollControl是我的用户控件。
我最终取代了这个:
xmlns:Controls="clr-namespace:EventTests.Controls"
为此:
xmlns:Controls="using:EventTests.Controls"
我希望这可以节省我在这个问题上花费的时间。