C# 如何引用在主窗口中从另一个类创建的类实例
我有一个关于范围的初学者问题。在MainWindow类中,我创建了一个用于数据绑定的ModelView类的实例,以及一个具有我想要显示的Leaves属性的Colla类的实例。我的问题是如何引用updateCabbageLeaves方法中的mycolla.LeavesC# 如何引用在主窗口中从另一个类创建的类实例,c#,mvvm,scope,C#,Mvvm,Scope,我有一个关于范围的初学者问题。在MainWindow类中,我创建了一个用于数据绑定的ModelView类的实例,以及一个具有我想要显示的Leaves属性的Colla类的实例。我的问题是如何引用updateCabbageLeaves方法中的mycolla.Leaves namespace TestScope { public partial class MainWindow : Window { public MainWindow() { InitializeCo
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,我需要一个模型类和一个模型视图类。应用程序在MainWindow类中启动,因此我在那里创建了模型和模型视图类的实例
我对C#还相当陌生。谢谢你的帮助
James您可以将coball对象作为参数传递:
public void updateCabbageLeaves(Cabbage myCabbage)
{
this.CabbageLeaves = myCabbage.Leaves;
}
public MainWindow()
{
InitializeComponent();
ModelView myModelView = new ModelView();
Cabbage myCabbage = new Cabbage();
myCabbage.Leaves = 99;
myModelView.updateCabbageLeaves(myCabbage);
}
你对这段关系的看法不太正确。您真正想要做的是在视图模型中创建一个模型本身的实例,将其传入,并在那里映射和操作它 注意:你的课程也应该是公开的。您必须指定此选项
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; }
}
}
不过,老实说,我对你的主要方法中的卷心菜操作不太感兴趣。相反,您可以在构造函数中传入所需的叶子数量,并允许视图模型自行处理
大体上
var myModelView = new ModelView(99);
在您的视图模型中
public class ModelView
{
public ModelView(int numberOfLeaves)
{
Cabbage = new Cabbage(){ Leaves = numberOfLeaves }
}
public Cabbage Cabbage { get; set; }
}
这是一个更简洁的方法,并且不会强制在主方法中操纵卷心菜谢谢,您关于传递对象和创建本地实例的建议非常有用。关于下半部分,你是对的-我的代码看起来不是那样的-我只是想创建一个最简单的示例来说明我的问题!:)很乐意帮忙:)。我只是想提供最好的款式。祝你们班好运!