Below is a simple demo project about databind of ListView. Hope it helps.
XAML
C#
XAML
<Window x:Class="ListViewSortDescriptions.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:ListViewSortDescriptions" Title="Window1" Height="300" Width="400"><Window.Resources><ObjectDataProvider x:Key="EmployeeInfoDataSource" ObjectType="{x:Type local:myEmployees}"/><DataTemplate x:Key="MyDataTemplate"><Border BorderBrush="#FF000FF0" BorderThickness="2,2,0,0" Margin="-6,-2,-6,-2"><StackPanel Margin="6,2,6,2"><TextBlock Text="{Binding MySpecialBinding}"/></StackPanel></Border></DataTemplate><Style x:Key="MyItemContainerStyle" TargetType="{x:Type ListViewItem}"><Setter Property="HorizontalContentAlignment" Value="Stretch" /><Setter Property="VerticalContentAlignment" Value="Stretch" /></Style></Window.Resources><Grid><ListView x:Name="MyListView" ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}" Margin="0,65,12,0"><ListView.View><GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Employee Information"><GridViewColumn x:Name="gridClm_SelectRow" Width="35"><GridViewColumn.CellTemplate><DataTemplate><Border BorderBrush="#FF000000" BorderThickness="1,1,0,0" Margin="-6,-2,-6,-2"><CheckBox Margin="0" x:Name="cbSelectRow" IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" /></Border></DataTemplate></GridViewColumn.CellTemplate><CheckBox IsEnabled="False" Margin="0" x:Name="chkSelectAll" /></GridViewColumn><GridViewColumn Header="First Name" Width="100"><GridViewColumn.CellTemplate><DataTemplate><Border BorderBrush="#FF000FF0" BorderThickness="2,2,0,0" ><StackPanel Width="100" ><TextBlock Text="{Binding FirstName}"/></StackPanel></Border></DataTemplate></GridViewColumn.CellTemplate></GridViewColumn><GridViewColumn Header="Last Name" Width="100"><GridViewColumn.CellTemplate><DataTemplate><Border BorderBrush="#FF000FF0" BorderThickness="2,2,0,0" ><StackPanel Width="100" ><TextBlock Text="{Binding LastName}"/></StackPanel></Border></DataTemplate></GridViewColumn.CellTemplate></GridViewColumn><GridViewColumn Header="Employee No." Width="100"><GridViewColumn.CellTemplate><DataTemplate><Border BorderBrush="#FF000FF0" BorderThickness="2,2,0,0" ><StackPanel Width="100" ><TextBlock Text="{Binding EmployeeNumber}"/></StackPanel></Border></DataTemplate></GridViewColumn.CellTemplate></GridViewColumn></GridView></ListView.View></ListView></Grid></Window>
C#
using System.Windows;
using System.Windows.Data;
using System.ComponentModel;
using System.Collections.ObjectModel;
namespace ListViewSortDescriptions
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
if (MyListView.ItemsSource != null)
{
MyListView.Language = System.Windows.Markup.XmlLanguage.GetLanguage("da-DK");
MyListView.Items.Culture = new System.Globalization.CultureInfo("da-DK", false);
(CollectionViewSource.GetDefaultView(MyListView.ItemsSource) as ICollectionView).SortDescriptions.Clear();
SortDescription sorter = new SortDescription("FirstName", ListSortDirection.Ascending);
(CollectionViewSource.GetDefaultView(MyListView.ItemsSource) as ICollectionView).SortDescriptions.Add(sorter);
}
}
}
public class EmployeeInfo
{
private string _firstName;
private string _lastName;
private string _employeeNumber;
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
public string LastName
{
get { return _lastName; }
set { _lastName = value; }
}
public string EmployeeNumber
{
get { return _employeeNumber; }
set { _employeeNumber = value; }
}
public EmployeeInfo(string firstname, string lastname, string empnumber)
{
_firstName = firstname;
_lastName = lastname;
_employeeNumber = empnumber;
}
}
public class myEmployees :
ObservableCollection<EmployeeInfo>
{
public myEmployees()
{
Add(new EmployeeInfo("Jesper", "Aaberg", "12345"));
Add(new EmployeeInfo("Dominik", "Paiha", "98765"));
Add(new EmployeeInfo("Yale", "Li", "23875"));
Add(new EmployeeInfo("Muru", "Subramani", "49392"));
}
}
}