複数のUIのインターフェイスコントローラー(ViewModel)

asp.net mvvm user-interface winforms wpf
複数のUIのインターフェイスコントローラー(ViewModel)

現在、新しい.NETアプリケーションを設計していますが、UIに依存しないようにします。

最初はWPFを使用したいと思いますが、必要に応じてUIをASPまたはWinFormsに交換するオプションが必要です。

階層化された設計では:

ビュー-インターフェイスコントローラー(ViewModel)-モデル-永続性

異なるビューテクノロジで動作するようにインターフェイスコントローラーを設計することはできますか、またはビューと同時にインターフェイスコントローラーを交換する必要がありますか?

  1  0


ベストアンサー

私のhttps://stackoverflow.com/questions/2629579/silverlight-with-mvvm-inheritance-modelview-and-view-matching-the-model/2629956#2629956[answer]の質問https://をご覧くださいstackoverflow.com/questions/2629579/silverlight-with-mvvm-inheritance-modelview-and-view-matching-the-model[“Silverlight with MVVM Inheritance:ModelView and View matching the Model “]。

私が与えた答えはあなたの状況にも有効です。

簡単に言うと、次の一般的なインターフェイスを定義します。

public interface IModel
{
}

public interface IViewModel
{
}

public interface IViewModel : IViewModel
    where M : IModel
{
    void Bind(M model);
}

public interface IView
{
}

public interface IView : IView
    where VM : IViewModel
{
    void Bind(VM viewModel);
}

これにより、次のような特定のインターフェイスを定義できます。

public interface IPersonModel : IModel
{
}

public interface IPersonViewModel : IViewModel
{
}

public interface IPersonView : IView
{
}

これらのインターフェースに対してレイヤーを実装することで、 `IView`インターフェースの実装をWPF、Silverlight、Windows Forms、さらにはASP.Netと交換できます。

2


あなたが〜をするなら

1)コードビハインドをxamlマークアップに入れようとしない

2)ビューモデルによって決定されるすべての関連機能を制限する

はい、あなたはそれをあらゆるビュー技術と交換できるはずです。

それを交換するとき、新しいUIがビューモデルと対話する方法を明らかに再配線する必要がありますが。 WPFがビューモデルに接続するために使用する主なインターフェイスは、INotifyPropertyChanged、INotifyCollectionChanged、およびICommandです。 したがって、新しいUIは基本的にこれらのインターフェイスを利用して同じ機能を取得する必要があります

0


タイトルとURLをコピーしました