Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WP8 C中将数据传递给ViewModel_C#_Wpf_Windows Phone 8_Mvvm - Fatal编程技术网

C# 如何在WP8 C中将数据传递给ViewModel

C# 如何在WP8 C中将数据传递给ViewModel,c#,wpf,windows-phone-8,mvvm,C#,Wpf,Windows Phone 8,Mvvm,我有一个列表,我想传递给ViewModel。直觉上,我认为传递它是一个参数给ViewModel的构造函数会很简单,但在这样做时,我得到了一个错误,ViewModel的构造函数应该是无参数的……这种情况下: public SomeMethod(){ List<T> list = new List<T>(); ViewModel vm = new ViewModel(list); } viewmodel: public class Vi

我有一个列表,我想传递给ViewModel。直觉上,我认为传递它是一个参数给ViewModel的构造函数会很简单,但在这样做时,我得到了一个错误,ViewModel的构造函数应该是无参数的……这种情况下:

public SomeMethod(){
        List<T> list = new List<T>();
        ViewModel vm = new ViewModel(list);
   }
viewmodel:

public class ViewModel
{
    public ObservableCollection<T> Collection { get; set; }

    public ViewModel(List<T> t)
    {
        Collection = new ObservableCollection<T>();

        foreach (T item in t)
        {
              this.Collection.Add(new T (item.value));
        }
    }

还有什么其他方法可以将列表传递给ViewModel..有一种方法我想在ViewModel中创建另一个方法,该方法接受列表作为参数,但是,由于构造函数也必须将参数传递给它,我如何才能从构造函数调用它。

只需将构造函数保留为空,并将集合属性修改为带有支持字段的属性即可

在这之后,你可以在你的二传手上做任何你想做的事

    private ObservableCollection<T> _collection
    public ObservableCollection<T> Collection { 
get{
return this._collection;
} 
set{
this._collection = value; 
// Do what you want here 
}

您可以创建第二个无参数构造函数。您可以添加无参数构造函数\默认构造函数。在VisualStudio中键入ctor并按TAB@Yuri我已经创建了它,但在与XAML端链接时,它仍然指向无参数构造函数,而不是另一个,因为它期望irt是无参数的……类似于这样:请参阅本文。在XAML中绑定时,需要使用依赖项注入将参数传递给viewmodel。如果使用MEF,则可以使用无参数构造函数和DI属性。