WPF 复合/串联字段
本文关键字:字段 复合 WPF | 更新日期: 2023-09-27 18:32:23
我正在使用MVVM,并且我的数据库中有一个字段,该字段是一个字符串,表示坐标。在屏幕上,我想将其分解为坐标部分,以便于用户编辑。到目前为止,我有一个课程可以提供帮助:
public class Coord
{
public int LatDegree {get;set;}
public int LatMinute {get;set;}
public int LatSecond {get;set;}
public char Latitude {get;set;}
public int LonDegree {get;set;}
public int LonMinute {get;set;}
public int LonSecond {get;set;}
public char Longitude {get;set;}
public Coord(string coord)
{
string[] coordAsString =coord.Split(' ');
this.LatDegree=Int32.Parse(coordAsString[0]);
this.LatMinute=Int32.Parse(coordAsString[1]);
this.LatSecond=Int32.Parse(coordAsString[2]);
this.Latitude = (coordAsString[3].ToCharArray())[0];
this.LonDegree = Int32.Parse(coordAsString[4]);
this.LonMinute = Int32.Parse(coordAsString[5]);
this.LonSecond = Int32.Parse(coordAsString[6]);
this.Longitude = (coordAsString[7].ToCharArray())[0];
}
public override string ToString()
{
string asString = String.Format(...//omitted for brevity
return asString;
}
}
在我的视图模型中
private Coord relativeGridOrigin;
private Coord RelativeGridOrigin
{
get
{
if(relativeGridOrigin==null)
{
relativeGridOrigin = new Coord(myMainObject.relativeGridOrigin);
}
return relativeGridOrigin;
}
set
{
relativeGridOrigin = value;
myMainObject.relativeGridOrigin = relativeGridOrigin.ToString();
}
}
我目前正在将 lattitude degre 控件绑定到:
public int LatitudeDegree
{
get { return RelativeGridOrigin.LatDegree; }
set
{
RelativeGridOrigin.LatDegree = value;
myMainObject.relativeGridOrigin = relativeGridOrigin.ToString();
}
}
但我不想要那个 LatitudeDegree 包装器(以及我需要的其他 7 个包装器) - 我只想在我的坐标对象中将控件绑定到 LatDegree,但我需要 myMainObject.relativeGridOrigin 在这 8 个值之一更改时随时更改 _ 我想我希望调用 RelativeGridOrigin setter。我想我要么需要将 RelativeGridOrigin setter 传递到 Coord 类中,要么让我的视图模型侦听 Coord 类的属性更改,但我不确定该怎么做,或者是否有另一种更好的方法。
按照这个答案来回答我的 MVVM 模式和依赖的孩子的另一个问题我意识到每当任何坐标设置器更改值时引发事件要整洁得多,然后 VM 可以侦听它并更新主对象