所以在开始的时候,我想设置一些变量,稍后会用到。我正在构建一些图形移动部分,其中我必须为每个移动设置步长(如果X更改为1,则值更改为1*步长...bla bla)。
我有MainWindowViewModel (简写版本):
public class MainWindowViewModel : ViewModelBase
{
public MainWindowViewModel()
{
// Initialization
Step = 3;
}
}DiagramObject类:
public abstract class DiagramObject : ViewModelBase
{
public abstract double X { get; set; }
public abstract string Xmeaning { get; set; }
public abstract double Y { get; set; }
public abstract string Ymeaning { get; set; }
}所以我在里面定义了“步骤”:
public class DiagramNode : DiagramObject
{
public int xstep = 3;
public int ystep = 1;
public int xstepvalue = 5;
public int ystepvalue = 5;
private double _x;
public override double X
{
get { return _x; }
set
{
//"Grid Snapping"
_x = (Math.Round(value / xstep)) * xstep;
NotifyPropertyChanged("X");
double minutes = (_x / xstep) * xstepvalue;
TimeSpan interval = TimeSpan.FromMinutes(minutes);
_xmeaning = interval.ToString();
NotifyPropertyChanged("Xmeaning");
}
}
private string _xmeaning;
public override string Xmeaning
{
get { return _xmeaning; }
set
{
//"Grid Snapping"
_xmeaning = value;
NotifyPropertyChanged("Xmeaning");
}
}
private double _y;
public override double Y
{
get { return _y; }
set
{
//"Grid Snapping"
_y = (Math.Round(value / ystep)) * ystep;
NotifyPropertyChanged("Y");
double keks = (_y / ystep) * ystepvalue;
_ymeaning = keks.ToString();
NotifyPropertyChanged("Ymeaning");
}
}
private string _ymeaning;
public override string Ymeaning
{
get { return _ymeaning; }
set
{
//"Grid Snapping"
_ymeaning = value;
NotifyPropertyChanged("Ymeaning");
}
}
}我的问题是如何在程序开始时从MainWindowViewModel更新DiagramNode类中的"xstep“、"ystep”和其他步骤?
因此,当我启动时,程序步骤将被定义并更新到DiagramNode类中--现在我已经在类中直接定义了。
我希望我给出足够的代码来理解这个概念(如果不是这样说的话)。如果有任何问题,请提出来。
发布于 2015-10-28 23:29:13
您的MainWindowViewModel需要实例化DiagramNode类的一个实例,以便它可以访问属性来修改它们。
public class MainWindowViewModel : ViewModelBase
{
DiagramNode myDiagramNode = new DiagramNode();
public MainWindowViewModel()
{
// Initialization
Step = 3;
myDiagramNode.xstep = 3;
}
}不过,通常更好的做法是将xstep和ystep之类的变量设置为私有,并使用访问器来处理值的设置/获取,如下所示
public class DiagramNode : DiagramObject
{
private int xstep;
public int XStep
{
get { return this.xstep; }
set { this.xstep = value; }
}
...
}
public class MainWindowViewModel : ViewModelBase
{
DiagramNode myDiagramNode = new DiagramNode();
public MainWindowViewModel()
{
myDiagramNode.XStep = 3;
}
}发布于 2015-10-28 23:34:33
您可以通过构造函数重载来设置它们
public class DiagramNode(int xstep, int ystep) { // set your values }
https://stackoverflow.com/questions/33394856
复制相似问题