Привязать результаты WMI к представлению данных - PullRequest
0 голосов
/ 27 августа 2018

Я некоторое время искал ответ, но не нашел ни одного ответа, соответствующего моей потребности.

Моя проблема заключается в следующем: я сделал несколько запросов wmi для получения информации об удаленных компьютерах,Но я хочу, чтобы часть этой информации отображалась в обзоре данных.Я понятия не имею, как заполнить мое представление данных автоматически.

Мой запрос довольно прост, и мои результаты правильно отображаются на консоли: он отображает установленное программное обеспечение с необходимой информацией.

 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);
        }

    }

Кнопка, запускающая этот запрос, локализована в другом классе.Поэтому я попробовал что-то вроде этого:

Form.mydgv.Rows.add(name);

Это говорит мне о том, что для строк нет никакого определения.Тогда я не знаю, хорошая ли это идея, но мой Datagridview «предварительно сделан» с необходимым столбцом, например:

<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>

Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 27 августа 2018

Используйте ORMi и привяжите DataGrid к результирующей коллекции:

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

mydgc.ItemsSource = products;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...