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

问题描述:

我已经创建了一个使用WPF和MVVM的应用程序,它遵循this article from CodeProject将参数传递给ViewModel并显示其数据

我有一个看法,TVSeriesView,它有一个TVSeriesViewModel。这两个连接使用文章后面的DataTemplate完成。

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

的想法是通过我的模式,TVSeries,这个视图模型,因为我有一个在视图模型命名为TVSeries财产。当此属性设置时,我将填充其他属性,如Title,Cover等。这些属性意味着绑定到视图中的控件。

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"); 
     } 
    } 
} 

首先,这听起来像是正确的做法吗?

接下来,有没有人知道如何将TVSeriesView显示时传递参数(TVSeries对象)到ViewModel?

最后,有没有人知道我可以直接访问视图中的资源?例如,如果我不希望使用数据绑定,而是希望直接设置图像是这样的:

myImage.ImageSource = myImageSource

+0

为什么在不想使用绑定的情况下创建视图模型? – blindmeis

+0

你是对的。我相信我会使用数据绑定。我只是认为有时可能会更容易直接访问控件。 – simonbs

查看和视图模型一起是模型的可能的表示之一。

您可以通过一个存储库手柄这将是最终的通过构造函数或
依赖注入通过依赖注入的数据访问或新型 混凝土/抽象对象负责,通过属性/方法或 在你可以写更粗暴的方式虚拟机中的数据库访问代码(显然不建议)。

我宁愿按照这里给出的顺序。你的代码正在做第三种选择。

+0

我不确定我是否理解。我可以请你举个例子吗? – simonbs