Create a ListView control that implements a GridView view with CheckBox controls for each row.

image_pdfimage_print


   
   

<Window x:Class="SDKSample.Window1"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Window.Resources>
    <XmlDataProvider x:Key="MyData" XPath="/Info">
      <x:XData>
        <Info xmlns="">
          <Song Name="Song 1"/>
          <Song Name="Song 2"/>
          <Song Name="Song 3"/>
        </Info>
      </x:XData>
    </XmlDataProvider>
    <Style x:Key="MyContainer" TargetType="{x:Type ListViewItem}">
      <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="true">
          <Setter Property="Foreground" Value="Blue" />
          <Setter Property="Cursor" Value="Hand"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsSelected" Value="true" />
            <Condition Property="Selector.IsSelectionActive" Value="true" />
          </MultiTrigger.Conditions>
          <Setter Property="Foreground" Value="Yellow" />
        </MultiTrigger>
      </Style.Triggers>
    </Style>
    <DataTemplate x:Key="FirstCell">
      <StackPanel Orientation="Horizontal">
        <CheckBox IsChecked="{Binding Path=IsSelected, 
          RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/>
      </StackPanel>
    </DataTemplate>
  </Window.Resources>
  <StackPanel>
    <ListView ItemsSource="{Binding Source={StaticResource MyData}, XPath=Song}" 
           ItemContainerStyle="{StaticResource MyContainer}" 
           SelectionMode="Single" 
           Name="myPlaylist">
      <ListView.View>
        <GridView>
          <GridViewColumn CellTemplate="{StaticResource FirstCell}" Width="30"/>
          <GridViewColumn Header="Name" DisplayMemberBinding="{Binding XPath=@Name}" Width="80"/>
        </GridView>
      </ListView.View>
    </ListView>
  </StackPanel>
</Window>

   
    
    
     


Use ArrayList as the ListView ItemSource

image_pdfimage_print


   
   

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:sys="clr-namespace:System;assembly=mscorlib"
      xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <StackPanel>
        <ListView>
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding Year}" 
                          Header="Year"
                          Width="50"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Month}" 
                          Header="Month"
                          Width="50"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Day}" 
                          Header="Day"
                          Width="50"/>
                </GridView>
            </ListView.View>
            <ListView.ItemsSource>
                <col:ArrayList>
                    <sys:DateTime>2006/1/1</sys:DateTime>
                    <sys:DateTime>2006/1/2</sys:DateTime>
                </col:ArrayList>
            </ListView.ItemsSource>
        </ListView>
    </StackPanel>
</Window>

   
    
    
     


Create a ListView control that implements a GridView view mode, displays content in groups.

image_pdfimage_print


   
   

<Window xmlns=&#039;http://schemas.microsoft.com/winfx/2006/xaml/presentation&#039;
        xmlns:x=&#039;http://schemas.microsoft.com/winfx/2006/xaml&#039;>
    <Window.Resources>
        <XmlDataProvider x:Key="MyData" XPath="/Info">
            <x:XData>
                <Info xmlns="">
                    <Item ID="1" Name="Book 1" Price="$2.05" Author="Author A" Catalog="Business"/>
                    <Item ID="2" Name="Book 2" Price="$0.00" Author="Author B" Catalog="Language"/>
                    <Item ID="3" Name="Book 3" Price="$19.00" Author="Author C" Catalog="Language"/>
                    <Item ID="4" Name="Book 4" Price="$81.50" Author="Author D" Catalog="Business"/>
                    <Item ID="5" Name="Book 5" Price="$9.00" Author="Author E" Catalog="Health"/>
                    <Item ID="6" Name="Book 6" Price="$18.50" Author="Author F" Catalog="Language"/>
                </Info>
            </x:XData>
        </XmlDataProvider>
        <CollectionViewSource x:Key=&#039;src&#039; Source="{Binding Source={StaticResource MyData}, XPath=Item}">
            <CollectionViewSource.GroupDescriptions>
                <PropertyGroupDescription PropertyName="@Catalog" />
            </CollectionViewSource.GroupDescriptions>
        </CollectionViewSource>
    </Window.Resources>

    <ListView ItemsSource=&#039;{Binding Source={StaticResource src}}&#039; BorderThickness="0">
        <ListView.GroupStyle>
            <GroupStyle>
                <GroupStyle.ContainerStyle>
                    <Style TargetType="{x:Type GroupItem}">
                        <Setter Property="Margin" Value="0,0,0,5"/>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type GroupItem}">
                                    <Expander IsExpanded="True" BorderBrush="#FFA4B97F" 
                            BorderThickness="0,0,0,1">
                                        <Expander.Header>
                                            <DockPanel>
                                                <TextBlock FontWeight="Bold" Text="{Binding Path=Name}" 
                                   Margin="5,0,0,0" Width="100"/>
                                                <TextBlock FontWeight="Bold" 
                                   Text="{Binding Path=ItemCount}"/>
                                            </DockPanel>
                                        </Expander.Header>
                                        <Expander.Content>
                                            <ItemsPresenter />
                                        </Expander.Content>
                                    </Expander>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </GroupStyle.ContainerStyle>
            </GroupStyle>
        </ListView.GroupStyle>
        <ListView.View>
            <GridView>
                <GridViewColumn Header="ID" 
                        DisplayMemberBinding="{Binding XPath=@ID}" 
                        Width="200" />
                <GridViewColumn Header="Name" 
                        DisplayMemberBinding="{Binding XPath=@Name}" 
                        Width="240" />
                <GridViewColumn Header="Price" 
                        DisplayMemberBinding="{Binding XPath=@Price}"
                        Width="180" />
                <GridViewColumn Header="Author" 
                        DisplayMemberBinding="{Binding XPath=@Author}" 
                        Width="180" />
            </GridView>
        </ListView.View>
    </ListView>


</Window>

   
    
    
     


ListView and ListViewItem

image_pdfimage_print


   
   

<Window x:Class="SimpleStyles.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="SimpleStyles"
  Background="#F8F8F8">
  <ScrollViewer>
    <WrapPanel>
      <HeaderedItemsControl Header="ListView">
        <StackPanel>
          <ListView Margin="8" Height="100" Width="150">
            <ListView.View>
              <GridView AllowsColumnReorder="true">
                <GridViewColumn DisplayMemberBinding="{Binding}" Header="Content" Width="100"/>
                <GridViewColumn DisplayMemberBinding="{Binding Path=Length}" Header="Length" Width="100"/>
              </GridView>
            </ListView.View>
            <ListViewItem Content="First Item" />
            <ListViewItem Content="Second Item" />
            <ListViewItem Content="Third Item" />
            <ListViewItem Content="Fourth Item" />
            <ListViewItem Content="Fifth Item" />
            <ListViewItem Content="Sixth Item" />
            <ListViewItem Content="Seventh Item" />
            <ListViewItem Content="Eighth Item" />
          </ListView>
        </StackPanel>
      </HeaderedItemsControl>
   
    </WrapPanel>
  </ScrollViewer>
</Window>

   
    
    
     


ListView columns

image_pdfimage_print


   
    

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      HorizontalAlignment="Center" VerticalAlignment="Center">
<ListView>
  <ListView.View>
    <GridView AllowsColumnReorder="true">
      <GridViewColumn Header="Name" />
      <GridViewColumn Header="Line Spacing" />
      <GridViewColumn Header="Sample" />
    </GridView>
  </ListView.View>
</ListView>
</Page>

   
    
    
    
     


Populating ListView rows

image_pdfimage_print


   
    

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      HorizontalAlignment="Center" VerticalAlignment="Center">
<ListView ItemsSource="{x:Static Fonts.SystemFontFamilies}">
  <ListView.View>
    <GridView>
      <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Source}" />
      <GridViewColumn Header="Line Spacing" DisplayMemberBinding="{Binding LineSpacing}" />
      <GridViewColumn Header="Sample">
        <GridViewColumn.CellTemplate>
          <DataTemplate>
            <TextBlock FontFamily="{Binding}" FontSize="20" Text="ABCDEFGabcdefg" />
          </DataTemplate>
        </GridViewColumn.CellTemplate>
      </GridViewColumn>
    </GridView>
  </ListView.View>
</ListView>
</Page>

   
    
    
    
     


Set Binding ListView.ItemsSourceProperty to ListView

image_pdfimage_print


   
  



<Window x:Class="WpfApplication1.Monitor"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=System"
    xmlns:debug="clr-namespace:System.Diagnostics;assembly=WindowsBase"
    Title="Monitor" Height="400" Width="400">
    <Grid>
        <ListView Name="listView1">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <WrapPanel>
                        <TextBlock Text="{Binding Path=Id}" MinWidth="80" />
                        <TextBlock Text="{Binding Path=ProcessName}" MinWidth="180" />
                        <TextBlock>
                                <TextBlock.Text>
                                    <Binding Path="WorkingSet" />
                                </TextBlock.Text>
                        </TextBlock>
                    </WrapPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</Window>


//File:Window.xaml.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.Imaging;
using System.Windows.Shapes;
using System.Diagnostics;

namespace WpfApplication1
{
    public partial class Monitor : Window
    {
        public Monitor()
        {
            InitializeComponent();
            BindProcessesToListView();
        }

        private void BindProcessesToListView()
        {
            ObjectDataProvider provider = new ObjectDataProvider();
            provider.ObjectType = typeof(Process);
            provider.MethodName = "GetProcesses";
            Binding binding = new Binding();
            binding.Source = provider;
            binding.Mode = BindingMode.OneWay;
           
            listView1.SetBinding(ListView.ItemsSourceProperty, binding);
        }
    }
}