Как отобразить процессы в представлении списка WPF? - PullRequest
0 голосов
/ 24 мая 2019

Мне нужно отобразить все процессы, а именно: имя процесса, идентификатор и приоритет в ListView

Я пытался:

public Process[] processes;
public string[] processesss;
public MainWindow() {
   InitializeComponent();
   processes = Process.GetProcesses();
   ProcessInfo.ItemsSource = processes;
}

XAML:

<ListView Name="ProcessInfo">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Process Name" Width="100" DisplayMemberBinding="{ProcessName}"/>
                    <GridViewColumn Header="Process ID" Width="100" DisplayMemberBinding="{ID}"/>
                    <GridViewColumn Header="Status" Width="70"/>
                </GridView>
            </ListView.View>
        </ListView>

Ответы [ 3 ]

1 голос
/ 24 мая 2019

попробуйте

            InitializeComponent();
            processes = Process.GetProcesses();
            List<processlist> processlist = new List<processlist>();
            foreach (Process item in processes)
             {
              processlist.Add(new processlist() { id = item.Id, name = item.ProcessName });
             }
            ProcessInfo.ItemsSource = processlist;

и добавьте этот класс

 public class processlist
{
    public int id { get; set; }
    public string name { get; set; }
}

WPF UI

<Grid >
        <ListView Margin="10" Name="ProcessInfo">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding name}" />
                    <GridViewColumn Header="id" Width="50" DisplayMemberBinding="{Binding id}" />
                  </GridView>
            </ListView.View>
        </ListView>
    </Grid>
0 голосов
/ 24 мая 2019

Следующий код получает все запущенные процессы с Process.GetProcesses() и проверяет каждый процесс. Затем добавляет в список из 2 столбцов.

Имя процесса : process.ProcessName

Идентификатор процесса : process.Id

public Process[] processes = Process.GetProcesses();
        public Form1()
        {
            InitializeComponent();
            foreach (Process process in processes)
            {
                listView1.Items.Add("Process: {0} ID: { 1}  ", process.ProcessName, process.Id);
            }
        }
0 голосов
/ 24 мая 2019

Вы на правильном пути.Просто убедитесь, что ваш элемент пользовательского интерфейса имеет правильную информацию о привязке, чтобы выбрать свойства из ItemsSource.Может быть немного проще для вас, если вы замените ListView на DataGrid и установите его AutoGenerateColumns в True.Это автоматически начнет показывать ваши процессы в сетке.

С другой стороны, вы можете использовать ListView или даже ListBox для своих целей, но тогда вам придется настроить ItemTemplate дляваш контроль, который сам по себе является широкой темой.

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