0

私は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 クラスのプロパティの変更をリッスンさせる必要があると思いますが、どちらを行うか、または別のより良い方法があるかどうかはわかりません。

4

1 に答える 1

0

私のMVVMパターンと依存する子供たちの別の質問に対するこの回答に続いて 、Coordセッターのいずれかが値を変更し、VMがそれをリッスンしてメインオブジェクトを更新できるたびにイベントを発生させる方がはるかにきれいであることに気付きました

于 2012-04-27T15:27:38.857 に答える