我试图从我的模型中的一些数据在我的 View 中获取一个DataGrid。我认为我必须在ViewModel中重新组织数据才能在View中显示它们。我是MVVM的新手,我想了解问题的2点:请记住,我既不知道行数,也不知道列数,我不应该使用哪种数据持有人? ObservableCollection ?更详细地,每行将有一个项目,每列将有一个项目的一个方面。 如何设置DataGrid的标题? 行应该像1,2,3一样垂直这些列应有其特定名称。这是我的尝试:MainWindow.xaml:<DataGrid AutoGenerateColumns="false" ItemsSource="{Binding MyTable}" />MainWindowViewModel.cs:private ObservableCollection<List<MyItem>> _myTable;public class MyItem{ public MyItem(string value) { Value= value; } public string Value{ get; set; }}public ObservableCollection<List<MyItem>> MyTable{ get { return _myTable; } set { _myTable = value; RaisePropertyChanged("MyTable"); }}命令的执行为:private void DisplayDataTableExecute() { MyTable = new ObservableCollection<List<MyItem>>(); var temp = new List<MyItem>(); temp.Add(new MyItem("one")); temp.Add(new MyItem("two")); temp.Add(new MyItem("three")); MyTable.Add(temp); temp = new List<MyItem>(); temp.Add(new MyItem("ONE")); temp.Add(new MyItem("TWO")); temp.Add(new MyItem("THREE")); MyTable.Add(temp); }当我使用AutoGenerateColumns =“false”时,当我使用AutoGenerateColumns =“true”时,我只会看到一些行(正确的数字,但为空),我会看到表的属性(容量和计数)。我真的需要一些帮助,因为我找不到解决方案。 最佳答案 这里有两个主要问题:第一:如果不设置列,则不能使用AutoGenerateColumns = "false"。您需要自己映射它们,即:<DataGrid AutoGenerateColumns="false" ItemsSource="{Binding MyTable}" > <DataGrid.Columns> <DataGridTextColumn Header="Value" Binding="{Binding Value}"/> </DataGrid.Columns></DataGrid>请注意,您可以只设置AutoGenerateColumns="true",这将为您类中的每个属性提供一列。第二:如果要对UI中反射(reflect)的代码进行更改,则需要使您的类(class MyItem)实现INotifyPropertyChanged。关于c# - 设计我的模型以绑定(bind)到DataGrid项目和标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22307987/
10-11 02:18