繁体   English   中英

XAML-创建类的实例

[英]XAML- creating an instance of a class

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

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

我在这里做错了什么? 我是否尝试从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 中创建和使用类的实例以更好地理解

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM