gpt4 book ai didi

c# - 如何从另一个类引用在 MainWindow 中创建的类实例

转载 作者:行者123 更新时间:2023-12-03 10:23:41 26 4
gpt4 key购买 nike

我有一个关于 Scope 的初学者问题。在 MainWindow 类中,我创建了用于数据绑定(bind)的 ModelView 类的实例,以及具有要显示的 Leaves 属性的 Cabbage 类的实例。我的问题是如何从 updateCabbageLeaves 方法中引用 myCabbage.Leaves ?

namespace TestScope
{

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

ModelView myModelView = new ModelView();
Cabbage myCabbage = new Cabbage();
myCabbage.Leaves = 99;
myModelView.updateCabbageLeaves();
}
}

class ModelView
{
public int CabbageLeaves { get; set; }

public void updateCabbageLeaves()
{
//CabbageLeaves = myCabbage.Leaves;
}
}

class Cabbage
{
public int Leaves { get; set; }
}

}

我想这不是设置 MVVM 的方法。我的理由是:对于 MVVM,我需要一个用于模型的类和一个用于模型 View 的类。应用程序从 MainWindow 类开始,所以我在那里创建了模型和模型 View 类的实例。

我对 C# 很陌生。谢谢你的帮助。

詹姆士

最佳答案

你对这段关系的看法不太正确。您真正想要做的是在您的 View 模型中创建 Cabbage 模型本身的实例,将其传入,并在那里进行映射和操作。

注意:您的类(class)也应该是公开的。您必须指定这一点。

namespace TestScope
{

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

ModelView myModelView = new ModelView();
Cabbage myCabbage = new Cabbage();
myCabbage.Leaves = 99;
myModelView.updateCabbageLeaves(myCabbage);
}
}

public class ModelView
{
public Cabbage Cabbage { get; set; }

public void updateCabbageLeaves(Cabbage myCabbage)
{
Cabbage = myCabbage.Leaves;
}
}

public class Cabbage
{
public int Leaves { get; set; }
}
}

但是,老实说,我根本不关心在您的主要方法中对 Cabbage 的操作。您可以改为在构造函数中传入所需的叶子数量,并允许 View 模型自行处理。

在主要...
var myModelView = new ModelView(99);

在你的 View 模型中
public class ModelView
{
public ModelView(int numberOfLeaves)
{
Cabbage = new Cabbage(){ Leaves = numberOfLeaves }
}

public Cabbage Cabbage { get; set; }
}

这有点干净,不会在您的主要方法中强制操作 Cabbage

关于c# - 如何从另一个类引用在 MainWindow 中创建的类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14785057/

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