<Window x:Class="WpfApp83.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp83"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<ListBox ItemsSource="{Binding}" HorizontalContentAlignment="Stretch">
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Border BorderBrush="Red" BorderThickness="2"
Background="White" Margin="2">
<TextBlock Text="{Binding Name,StringFormat=Priority:{0}}"
FontSize="16" FontWeight="ExtraBold"
Margin="4"/>
</Border>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListBox.GroupStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<UniformGrid Rows="1" Columns="2" >
<TextBlock Text="{Binding ProcessName}"/>
<TextBlock Text="{Binding Id,StringFormat=ID:\{0\}}"/>
<!--<TextBlock Text="{Binding PriorityClass}"/>-->
</UniformGrid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
//xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Diagnostics;
namespace WpfApp83
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public static bool CanAccess(Process proc)
{
try
{
var h = proc.Handle;
return true;
}
catch (Exception)
{
return false;
}
}
public MainWindow()
{
InitializeComponent();
var procs = Process.GetProcesses().Where(CanAccess);
var view = CollectionViewSource.GetDefaultView(procs);
view.GroupDescriptions.Add(new PropertyGroupDescription("PriorityClass"));
DataContext = procs;
}
}
}