Ich habe meine DataGrid
an <ObservableCollection> People
gebunden. Es erzeugt die Spalten wie erwartet. Mein Problem ist, dass ich den Benutzer leere Zeilen hinzufügen lassen möchte. Wie kann ich das machen?WPF DataGrid erlaubt dem Benutzer nicht, leere Zeilen hinzuzufügen
Hier ist meine komplette Code:
<Window x:Class="WpfApplication5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<DataGrid AutoGenerateColumns="True"
ItemsSource="{Binding People}"
CanUserAddRows="True"/>
</StackPanel>
</Window>
public class Person
{
public Person(string firstName, string lastName)
{
Firstname = firstName;
Lastname = lastName;
}
public string Firstname { get; set; }
public string Lastname { get; set; }
}
public sealed class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private ObservableCollection<Person> people = new ObservableCollection<Person>
{
new Person("Jack", "Shephard"),
new Person("John", "Locke")
};
public ObservableCollection<Person> People
{
get { return people; }
set
{
people = value;
OnPropertyChanged("People");
}
}
private void OnPropertyChanged(string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var viewModel = new ViewModel();
DataContext = viewModel;
}
}
Wenn [ 'CanUserAddRows' ] (https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.canuseraddrows (v = vs.110) .aspx) wird auf "true" (Standardwert) gesetzt, dann sollte der Benutzer in der Lage sein um bereits neue Zeilen hinzuzufügen, aber es benötigt einen parameterlosen Konstruktor. Oder fügen Sie 'ObservableCollection' eine leere' Person' hinzu – dkozl