0

次のビジネス オブジェクトを使用します。

public class ItemsRow : BusinessObject<ItemsRow>
{
    public static readonly DependencyProperty ItemIdProperty = DependencyProperty.Register("ItemId", typeof(int), typeof(ItemsRow));
    public static readonly DependencyProperty DescriptionProperty = DependencyProperty.Register("Description", typeof(string), typeof(ItemsRow));

    public int ItemId
    {
        get { return (int)this.GetValue(ItemIdProperty); }
        set { this.SetValue(ItemIdProperty, value); }
    }

    public string Description
    {
        get { return (string)this.GetValue(DescriptionProperty); }
        set { this.SetValue(DescriptionProperty, value); }
    }
}

プロパティが既に DependencyProperty のものであることを見て、モデル内のプロパティをどのように公開しますか?

これを行う意味があるかどうかは疑問に思っていました:

public class ItemModel: DependencyObject
{
    Item _item;

    public ItemModel(Item item) 
    {
        _item = item;
    }

    public static readonly DependencyProperty DescriptionProperty = Item.DescriptionProperty;

    public string Description
    {
        get { return _item.Description; }
        set { _item.Description = value; }
    }
}

それは意図したとおりに機能するでしょうか、それともビジネス オブジェクトの DependencyProperty によってサポートされる独自の DependencyProperty のセットがモデルに必ず必要でしょうか? または、これを少し変更して正しく動作させることはできますか?

4

1 に答える 1

1

依存関係プロパティの登録では、プロパティが定義されている型を知る必要があるため、これは機能しません。そのため、3 番目の引数を register メソッドに渡します。ここまでの理由だけでは、うまく機能しません。しかし、理論的な MVVM 設計の観点からは、ビジネス オブジェクトによく似た別のオブジェクトをモデル内に持つことは、別の抽象化レイヤーを持つことを選択したトレードオフです。基本的に冗長性を購入して、モデルを変更せずにビジネスオブジェクトを交換できる別の抽象化レイヤーを使用できるようにします。ただし、モデル オブジェクトをビジネス オブジェクト実装の詳細に依存させると、その目的が無効になります。その場合、「ビジネス オブジェクト」をモデル オブジェクトとして直接使用します。

于 2012-12-26T06:58:10.103 に答える