如何在视图模型中设置数据网格的内容

本文关键字:网格 置数据 视图 模型 | 更新日期: 2023-09-27 18:31:08

我正在将DataGrid从代码隐藏移动到ViewModel-UserControl结构中。在代码隐藏中,我的DataGrid的设置是这样设置的......

public Window1()
{
     setDataGrid();
}
public class Data
{
     public int inOutNum { set; get; }
     public string input { set; get; }
     public string output { set; get; }
}
public static void setDataGrid()
{
     //Query for Window1
     var mainWindow = Application.Current.Windows
         .Cast<Window1>()
         .FirstOrDefault(window => window is Window1) as Window1;
     for (int i = 1; i <= 16; i++)
     {
         mainWindow.dataGrid.Items.Add(new Data() { inOutNum = i - 1, input = "", output = ""});
     }
}

<DataGridTextColumn Binding="{Binding Path=inOutNum}" Width="15" />
<DataGridTextColumn Binding="{Binding Path=input}" Header="Inputs" Width="160" />
<DataGridTextColumn Binding="{Binding Path=output}" Header="Outputs" Width="160" />

切换到视图模型结构时,我想放弃使用上面使用的窗口查询(因为我猜这是使用网格的错误方式)。当我将上述 c# 代码放入 ViewModel 时,程序在我添加内容的循环中看不到DataGrid如何更改我拥有的代码,以便它正确地添加到新位置的DataGrid中?

如何在视图模型中设置数据网格的内容

您应该为窗口创建一个 ViewModel 类,其中包含一个集合(通常是 ObservableCollection)或 Data 对象。 然后,要挂接它们,您需要将窗口的 DataContext 设置为新的 ViewModel 类,并将 DataGrid 的 ItemsSource 设置为 ObservableCollection