XAML-创建类的实例



我正试图从应用程序的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中创建和使用类的实例,以更好地理解

相关内容

  • 没有找到相关文章

最新更新