我一直在跟踪
this
迄今为止有效的实现,但仅当我将一个对象数组分配给MainWindow.xaml.cs中的DataGrid时(如该示例中所示),它以前的外观如下:
public MainWindow()
{
InitializeComponent();
var TableDat = new ObservableCollection<LineViewModel>()
{
new LineViewModel(1,2,888,6,5), // Random values to see if anyhting dipslays
new LineViewModel(122,2,888,6,5),
};
this.dataGrid1.ItemsSource = TableDat ;
}
XAML中的DataGrid如下所示:
<DataGrid AutoGenerateColumns="False"
Height="Auto"
HorizontalAlignment="Left"
Name="dataGrid1"
VerticalAlignment="Top"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
Grid.Row="1">
<DataGrid.Columns >
<DataGridTextColumn Binding="Item1" Width="*">
<DataGridTextColumn Binding="Item2" Width="*" />
<DataGridTextColumn Binding="Item3" Width="*" />
<DataGridTextColumn Binding="Item4" Width="*" />
<DataGridTextColumn Binding="Item5" Width="*" />
</DataGrid.Columns>
</DataGrid>
我想把我的项目划分成一个我认为是正确的MVVM布局,为Models、ViewModels、View文件提供单独的文件夹,而不是在主类中发生的所有事情。
我希望整个结构大致相似
查看<-&燃气轮机;视图模型<-&燃气轮机;模型
这是我的主窗口.xaml.cs
public partial class MainWindow : Window {
private DataGridViewModel _dat = new DataGridViewModel();
public MainWindow()
{
InitializeComponent();
DataContext = _dat;
}
}
我想从这个类将对象数组传递给前面提到的DataGrid。
class DataGridViewModel : ObservableObject
{
public ObservableCollection<LineViewModel> TableDat { get; private set; }
public DataGridViewModel()
{
var TableDat = new ObservableCollection<LineViewModel>()
{
new LineViewModel(1,2,888,6,5),
new LineViewModel(122,2,888,6,5),
};
//Here I would like to pass the object array to the data grid, dataGrid1
}
}
现在
this.dataGrid1.ItemsSource = TableDat;
产量:
Severity Code Description Project File Line Suppression State Error CS1061
'DataGridViewModel' does not contain a definition for 'dataGrid1' and no accessible
extension method 'dataGrid1' accepting a first argument of type 'DataGridViewModel'
could be found(are you missing a using directive or an assembly reference ?)
我想这是因为我试图将它传递给MainWindow.xaml,而不是DataGrid.xaml。
如果我改变
this
MainWindow
MainWindow.dataGrid1.ItemsSource = TableDat;
我希望它能将它链接到我得到的相应xaml文件:
Severity Code Description Project File Line Suppression State Error CS0120
An object reference is required for the non-static field, method, or property
'MainWindow.dataGrid1'
我是一个新的面向对象的东西和许多这些概念是在我的头上的时候,所以请原谅我,如果我没有制定我想说的核心,也没有使用正确的术语。
我已经到了失败的地步,我承认如果我成功地从MainWindow.xaml.cs正确地传递了数组,那么我也可以在那里完成它,以及其他所有的事情,而不是再花几天(几周)的时间来试图弄清楚如何正确地或完全地完成它。
谢谢