Create a viewmodel that can be set as a data context for XAML
public class WindowsViewModel { private ObservableCollection<RowViewModel> m_Rows; public ObservableCollection<RowViewModel> Rows { get { return m_Rows; } set { m_Rows = value; } } public WindowsViewModel() { Rows = new ObservableCollection<RowViewModel>(); Rows.Add(new RowViewModel { ID = "42", Category = "cat", CharLimit = 32, Text = "Bonjour" }); } }
RowViewModel class as follows:
public class RowViewModel:INotifyPropertyChanged { public RowViewModel() { } private string m_ID; public string ID { get { return m_ID; } set { m_ID = value; NotifyPropertyChanged("ID"); } } public string Category { get; set; } public int CharLimit { get; set; } public string Text { get; set; } public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(string Obj) { if (PropertyChanged != null) { this.PropertyChanged(this,new PropertyChangedEventArgs(Obj)); } } }
In the XAML code, add the code:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); this.DataContext = new WindowsViewModel(); } }
Add the trigger property of the update source to the listview node:
<ListView ItemsSource="{Binding Rows, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"> <ListView.View> <GridView> <GridViewColumn Width="200" Header="ID" DisplayMemberBinding="{Binding Path=ID}" /> <GridViewColumn Width="200" Header="Category" DisplayMemberBinding="{Binding Path=Category}" /> <GridViewColumn Width="200" Header="Text" DisplayMemberBinding="{Binding Path=Text}" /> </GridView> </ListView.View>
source share