我正试图从应用程序的XAML标记中创建C#类的实例。
我正在尝试在<StackPanel></StackPanel>
标记中使用C#类的实例,在我嵌套在<TabControl></TabControl>
标记中的<TabItem></TabItem>
标记中,我已经声明了C#类所属的命名空间:
<TabControl xmlns:agent="RAgent">
<TabItem Header="R">
<StackPanel>
...
</StackPanel>
</TabItem>
<TabItem Header = "BClass">
<StackPanel>
<agent:BClass />
</StackPanel>
</TabItem>
</TabControl>
C#类BClass
定义为:
namespace RAgent{
public partial class BClass : UserControl{
public BClass(){
...
}
...
}
}
我知道C#代码的编译和运行是正确的,因为我之前已经将它与应用程序的其他部分分开运行过。然而,当我当前尝试构建代码时,我在XAML中遇到了一个编译错误,行为:
<agent:BClass />
上面写着:
名称"BClass"不存在于命名空间"RAgent"中
但是BClass
显然存在于名称空间RAgent
中,因为我已经用namespace RAgent{
声明了BClass.cs
文件顶部的名称空间。。。
我在这里做错了什么?我是否试图从XAML文件中错误地实例化BClass
?我该怎么做?
编辑
好的,所以我已经根据"如何在XAML中创建类的实例?"中的答案编辑了我的.xaml
文件?,以及我从不同地方获得的其他信息。
我添加了一行:
xmlns:local="clr-namespace:RAgent">
到文件顶部,然后删除<TabControl>
标记中xmlns
的使用,并尝试通过local
:创建该类的实例
<TabControl>
...
<TabItem Header="BClass">
<StackPanel>
<local:BClass x:Name="BClass" />
</StackPanel>
</TabItem>
</TabControl>
然而,我现在在尝试实例化BClass
:的行上遇到了一个编译错误
<local:BClass x:Name="BClass" />
上面写着:
无法将"BClass"类型的值添加到"UIElementCollection"类型的集合或字典中。
我尝试删除<StackPanel></StackPanel>
标记,尽管这删除了上面的编译错误,但它给我留下了一个写着:
名称"BClass"不存在于名称空间"clr-namespace:RAgent"中——正如
BClass
的定义所示,它确实存在。。。
有人知道我该怎么解决吗?
我建议您在MainApp中创建TabControl
,然后将每个TabItem
作为项目中的UserControl
。然后,您可以通过执行<local:BClass x:Name="BClass"/>
检查不同XAML视图中的选项卡以及如何在XAML中创建和使用类的实例,以更好地理解