在我的表示层 (PrintViewModel.cs) 中,我有以下代码,我在其中公开了将用于填充数据网格的数据集。
public const string ViewFullRecipeGroupingPropertyName = "ViewFullRecipeGrouping";
public List<ViewFullRecipe> _viewFullRecipeGrouping = new List<ViewFullRecipe>();
public List<ViewFullRecipe> ViewFullRecipeGrouping
{
get { return _viewFullRecipeGrouping; }
set { Set(ViewFullRecipeGroupingPropertyName, ref _viewFullRecipeGrouping, value, true); }
}
现在在我的视图层(PrintPage.xaml.cs)中,我正在以编程方式创建一个数据网格,完成后我需要设置 itemsource,如下所示:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var datagrid = new DataGrid();
datagrid.ItemsSource = PrintViewModel.ViewFullRecipeGrouping;
}
但是,这会产生以下错误:
非静态字段、方法或属性“Presentation.Print.PrintViewModel.ViewFullRecipeGrouping.get”需要对象引用
我知道我的数据集没问题,因为如果我直接在 XAML 中设置它,它工作得非常好(对于我在 XAML 本身中创建的测试数据网格)。
所以,我想问题在于我如何从 PRESENTATION 层(在我的 VIEW 层)访问 ViewFullRecipeGrouping。
这是 PrintViewModel 的实例化方式:
public class ViewModelLocator
{
static ViewModelLocator()
{
SimpleIoc.Default.Register<PrintViewModel>(true);
}
public PrintViewModel Print
{
get
{
return ServiceLocator.Current.GetInstance<PrintViewModel>();
}
}
关于如何完成这项工作或更好的方法的任何想法或建议(我在这里违反了 MVVM 吗?)谢谢,