将 WMI 结果绑定到数据网格视图

Bind WMI results to a datagridview

我搜索了一段时间的答案,但没有找到符合我需要的答案。

我的问题如下: 我提出了一些 wmi 请求来检索有关远程计算机的一些信息。但我希望其中一些信息显示在 datagridview 上。我不知道如何以 promatically 方式填充我的 datagridview。

我的要求很简单,我的结果在控制台上正确显示:它显示已安装的软件,以及一些需要的信息。

 public void getInstalledSoftwares(string hostname)
    {
        ManagementScope scope = new ManagementScope("\\" + hostname + "\root\cimv2");
        scope.Connect();

        ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Product");
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

        foreach (ManagementObject product in searcher.Get())
        {

            Object Name = product["Name"].ToString();
            Object Version = product["Version"].ToString();
            /*
             * [...]
             **/ 

            // Populate the datagridview ?

            Console.WriteLine(Name + " --- " + Version);
        }

    }

启动此请求的按钮已本地化在另一个 class 中。所以我尝试了这样的事情:

Form.mydgv.Rows.add(name);

它告诉我没有任何行定义。然后,我不知道这是否是个好主意,但我的 Datagridview 是 "pre-made" 需要的列,就像这样:

<DataGrid x:Name="datagrid_software"  Margin="5" Grid.Row="1" >
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Application" Width="*"/>
                        <DataGridCheckBoxColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Editeur" Width="Auto"/>
                        <DataGridCheckBoxColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Installé le" Width="Auto"/>
                        <DataGridCheckBoxColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Localisation" Width="*"/>
                        <DataGridCheckBoxColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Taille" Width="Auto"/>
                        <DataGridCheckBoxColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Version" Width="Auto"/>
                        <DataGridCheckBoxColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Uninstall" Width="*"/>
                    </DataGrid.Columns>
                </DataGrid>

非常感谢您的帮助。

使用 ORMi 并将 DataGrid 绑定到生成的集合:

var products = helper.Query("SELECT * FROM Win32_Product").ToList();

mydgc.ItemsSource = products;