XAML-创建类的实例

问题描述 投票:2回答:1

我正在尝试从应用程序的XAML标记中创建C#类的实例。

[我试图在<StackPanel></StackPanel>标记内,嵌套在<TabItem></TabItem>标记中的<TabControl></TabControl>标记内使用C#类的实例,在该标记中,我声明了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中,因为我已经用BClass.cs声明了namespace RAgent{文件顶部的名称空间>]

我在这里做错了什么?我是否试图从XAML文件中错误地实例化BClass?我应该怎么做?

编辑

[好,所以我根据.xaml的答案以及我从不同地方获得的其他信息,对How to create instance of class in XAML?文件进行了一些编辑。

我已经添加了这一行:

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" />

其中说:

不能将类型为“ BClass”的值添加到类型为“ UIElementCollection”的集合或词典中。

我尝试删除<StackPanel></StackPanel>标记,尽管这消除了上面的编译错误,但它给我留下了一个提示:

名称“ BClass”在命名空间“ clr-namespace:RAgent”中不存在,它显然存在,如BClass的定义所示。

谁知道我该如何解决?

我正在尝试从我的应用程序的XAML标记中创建C#类的实例。我试图在

标记内使用C#类的实例,...
c# wpf xaml build-error
1个回答
0
投票

我建议您在MainApp中创建TabControl,然后在项目中将每个TabItem创建为UserControl。然后,您可以通过执行以下操作轻松地在相应的选项卡中实例化您的类<local:BClass x:Name="BClass"/>

检查Tabs in different XAML viewsHow to create and use an instance of a class in XAML以获得更好的理解

© www.soinside.com 2019 - 2024. All rights reserved.