将参数传递给ViewModel并显示其数据

时间:2012-10-22 12:35:27

标签: c# wpf visual-studio-2010

我创建了一个在this article from CodeProject之后使用WPF和MVVM的应用程序。

我有一个TVSeriesView视图,其中有一个TVSeriesViewModel。这两个是使用DataTemplate连接的,这是在文章之后完成的。

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

我的想法是将我的模型TVSeries传递给此ViewModel,因为我在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时如何将参数(TVSeriesView对象)传递给ViewModel?

最后,有谁知道如何直接访问视图中的资源?例如,如果我不想使用数据绑定,而是想直接设置图像:

myImage.ImageSource = myImageSource

1 个答案:

答案 0 :(得分:0)

View和ViewModel一起是Model的可能表示之一。

您可以传递最终负责数据访问的存储库句柄 模型的具体/抽象对象通过构造函数的依赖注入或 依赖注入,通过属性/方法或 您可以更粗略地在VM中编写数据库访问代码(显然不建议这样做。)

我更喜欢这里给出的顺序。您的代码正在执行第三个选项。