私は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();
}
}
現在、緯度制御を次のようにバインドしています。
public int LatitudeDegree
{
get { return RelativeGridOrigin.LatDegree; }
set
{
RelativeGridOrigin.LatDegree = value;
myMainObject.relativeGridOrigin = relativeGridOrigin.ToString();
}
}
しかし、その LatitudeDegree ラッパー (および必要な他の 7 つ) は必要ありません。Coord オブジェクトでコントロールを LatDegree にバインドしたいだけですが、myMainObject.relativeGridOrigin を使用して、これらの 8 つの値のいずれかをいつでも変更する必要があります。 changes _ RelativeGridOrigin セッターを呼び出したいと思います。RelativeGridOrigin セッターを Coord クラスに渡すか、ビュー モデルに Coord クラスのプロパティの変更をリッスンさせる必要があると思いますが、どちらを行うか、または別のより良い方法があるかどうかはわかりません。