gpt4 book ai didi

c# - XAML-创建类的实例

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:50 24 4
gpt4 key购买 nike

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

我正在尝试在 <StackPanel></StackPanel> 中使用 C# 类的实例标签,在 <TabItem></TabItem> 内我嵌套在 <TabControl></TabControl> 中的标签我在其中声明了 C# 类所属的 namespace 的标记:

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

上面写着:

The name "BClass" does not exist in the namespace "RAgent"

但是BClass显然确实存在于命名空间 RAgent 中,因为我已经在 BClass.cs 的顶部声明了命名空间文件 namespace RAgent{ ...

我在这里做错了什么?我要实例化 BClass XAML 文件中的错误?我应该怎么做?

编辑

好的,我已经编辑了我的 .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" />

上面写着:

A value of type 'BClass' cannot be added to a collection or dictionary of type 'UIElementCollection'.

我尝试删除 <StackPanel></StackPanel>标签,虽然这消除了上面的编译错误,但给我留下了一个这样的错误:

The name "BClass" does not exist in the namespace "clr-namespace:RAgent"- which it clearly does, as shown by the definition of BClass...

有人知道我该如何解决这个问题吗?

最佳答案

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

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

关于c# - XAML-创建类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37047773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com