在我的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访问它,但在应用程序页面类中无法识别它。
答案 0 :(得分:0)
如果您使用MVVM,那么在视图中拥有数据源是一个巨大的 no no 。如果您坚持使用它,那么您不使用MVVM。
但是,如果您只是在视图后面的代码中创建一个DependencyProperty
来保存数据集合,那么您可以从那里将数据绑定到它。我们假设您的财产名为Collection
...
Collection = new ObservableCollection<Record>();
GenerateData();
...您可以从视图中将数据绑定到它:
<ListBox ItemsSource="{Binding Collection, RelativeSource={RelativeSource
AncestorType={x:Type YourLocalPrefix:YourView}}}" ... />
但是,我不能强调将您的观点与数据访问分开的重要性。