1

CodeProjectのこの記事に従って、WPFとMVVMを使用するアプリケーションを作成しました。

私は、を持っているビューを持ってTVSeriesViewTVSeriesViewModelます。これら2つは、記事の後に行われるDataTemplateを使用して接続されます。

<DataTemplate DataType="{x:Type Implementation:TVSeriesViewModel}">
    <TVSeriesLibrary:TVSeriesView />
</DataTemplate>

TVSeriesViewModelで名前が付けられたプロパティがあるので、このViewModelにモデルを渡すという考え方ですTVSeries。このプロパティを設定すると、などの他のプロパティにデータが入力さTitleCoverます。これらのプロパティは、ビュー内のコントロールにバインドされることを目的としています。

public class TVSeriesViewModel : ViewModelBase, ITVSeriesViewModel
{
    private TVSeries _tvSeries;
    private string _title;
    private ImageSource _cover;

    public TVSeries TVSeries
    {
        get
        {
            return this._tvSeries;
        }
        set
        {
            this._tvSeries = value;
        }
    }

    public string Title
    {
        get
        {
            return this._title;
        }
        set
        {
            this._title = value;
            OnPropertyChanged("Title");
        }
    }

    public ImageSource Cover
    {
        get
        {
            return this._cover;
        }
        set
        {
            this._cover = value;
            OnPropertyChanged("Cover");
        }
    }
}

まず第一に、これはそれを行う正しい方法のように聞こえますか?

TVSeries次に、が表示されたときにパラメータ(オブジェクト)をViewModelに渡す方法を知っている人はいTVSeriesViewますか?

そして最後に、ビュー内のリソースに直接アクセスする方法を知っている人はいますか?たとえば、データバインディングを使用せず、代わりに次のように画像を直接設定したい場合:

myImage.ImageSource = myImageSource

4

1 に答える 1

0

ViewとViewModelは一緒になって、モデルの可能な表現の1つです。

最終的にデータアクセスまたはモデルの具象/抽象オブジェクトを担当するリポジトリハンドルを、コンストラクターまたは
依存性注入を介した依存性注入、プロパティ/メソッドを介して渡すことができます。より大雑把な方法で、VMにDBアクセスコードを記述できます(明らかにそれは提案されていません。)

私はここで与えられた順序として好むでしょう。あなたのコードは3番目のオプションを実行しています。

于 2012-10-22T13:03:44.513 に答える