我正在尝试从我的应用程序的XAML标记中创建一个C#类的实例。
我正在尝试在<StackPanel></StackPanel>
标记内使用C#类的实例,我已嵌套在<TabItem></TabItem>
标记中的<TabControl></TabControl>
标记中我已声明了名称空间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 />
说:
名称&#34; BClass&#34;命名空间中不存在&#34; RAgent&#34;
但是BClass
明显存在于命名空间RAgent
中,因为我已使用BClass.cs
在namespace RAgent{
文件的顶部声明了命名空间...
我在这里做错了什么?我是否尝试在XAML文件中错误地实例化BClass
?我该怎么做?
修改
好的,所以我根据How to create instance of class in XAML?的答案,以及我从不同地方收集到的其他信息,对我的.xaml
文件进行了一些编辑。< / p>
我添加了这一行:
xmlns:local="clr-namespace:RAgent">
到文件顶部,然后移除xmlns
标记中<TabControl>
的使用,并尝试通过local
创建该类的实例:
<TabControl>
...
<TabItem Header="BClass">
<StackPanel>
<local:BClass x:Name="BClass" />
</StackPanel>
</TabItem>
</TabControl>
但是,我现在在我尝试实例化BClass
的行上遇到编译错误:
<local:BClass x:Name="BClass" />
说:
类型&#39; BClass&#39;无法添加到类型&#39; UIElementCollection&#39;的类型的集合或词典中。
我尝试删除<StackPanel></StackPanel>
标记,虽然这删除了上面的编译错误,但它给我留下了一个说:
名称&#34; BClass&#34;命名空间中不存在&#34; clr-namespace:RAgent&#34; - 它显然是这样做的,如
BClass
的定义所示......
任何人都知道如何解决这个问题?
答案 0 :(得分:0)
我建议您在MainApp中创建TabControl
,然后在项目中将每个TabItem
创建为UserControl
。然后,您可以通过执行以下操作轻松地在相应的选项卡中实例化您的类
<local:BClass x:Name="BClass"/>
检查Tabs in different XAML views和How to create and use an instance of a class in XAML以获得更好的理解