如何在ListView WPF中显示进程?

时间:2019-05-24 12:29:06

标签: c# wpf

我需要显示所有进程,即:ListView中的进程名称,ID和优先级

我尝试过:

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 个答案:

答案 0 :(得分:1)

尝试

            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用户界面

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

答案 1 :(得分:0)

您在正确的轨道上。只要确保您的UI元素具有正确的绑定信息即可从ItemsSource中选择属性。如果将ListView替换为DataGrid并将其AutoGenerateColumns设置为True,对您来说可能会容易一些。这将自动开始在网格中显示您的过程。

另一方面,您可以使用ListView甚至是ListBox来实现目的,但是随后您必须为控件设置ItemTemplate,这是一个广泛的主题本身。

答案 2 :(得分:-1)

以下代码使用Process.GetProcesses()获取所有正在运行的进程,并检查每个进程。然后添加到2列listview中。

进程名称process.ProcessName

进程ID 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);
            }
        }