如何将数据从应用程序页面类传递到ViewModel类WP8

时间:2015-02-18 13:47:05

标签: c# wpf xaml windows-phone-8 mvvm

在我的WP8应用程序页面中,我正在生成我用于绘制图表的ViewModel的数据。生成的数据作为List传递给ViewModel。这是我有一个 有点问题,因为它们是不同的类,列表的可见范围不会扩展到ViewModel的集合。

这是应用程序页面中的数据(我正在做的一个例子):

namespace M
{

public partial class SampleRecord : PhoneApplicationPage
{

    List<Record> r_List = new List<Record>();
    public SampleRecord()
    {
        InitializeComponent();

    }

    private void PhoneApplicationPage_Loaded_1(object sender, RoutedEventArgs e)
    {
      //after proceesing the data
        r_List.Add(1, 100);
        r_List.Add(2, 200);
        r_List.Add(3, 300);
    }
    }
    }

ViewModel类:

public class ViewModel
{
    public ObservableCollection<Record> Collection { get; set; }
    public ViewModel()
    {
        Collection = new ObservableCollection<Record>();
        GenerateData();
    }
    private void GenerateData()
    {

        for(int i<0; i<r_List.Count; i++){\

         this.Collection.Add(add elements of the list to the collection);
        }


    }
}

}

尝试在App.xaml.cs中声明List,以便可以在eveywhere访问它,但在应用程序页面类中无法识别它。

1 个答案:

答案 0 :(得分:0)

  

如果您使用MVVM,那么在视图中拥有数据源是一个巨大的 no no 。如果您坚持使用它,那么您使用MVVM。

但是,如果您只是在视图后面的代码中创建一个DependencyProperty来保存数据集合,那么您可以从那里将数据绑定到它。我们假设您的财产名为Collection ...

Collection = new ObservableCollection<Record>();
GenerateData();

...您可以从视图中将数据绑定到它:

<ListBox ItemsSource="{Binding Collection, RelativeSource={RelativeSource 
    AncestorType={x:Type YourLocalPrefix:YourView}}}" ... />

但是,我不能强调将您的观点与数据访问分开的重要性。