2016-07-31 3 views
0

Я привязал свой DataGrid к <ObservableCollection> People. Он генерирует столбцы, как ожидалось. Моя проблема в том, что я хочу, чтобы пользователь добавил пустые строки. Как я могу это сделать?WPF datagrid не позволяет пользователю добавлять пустые строки

Вот мой полный код:

<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; 
    } 
} 
+1

Если [ 'CanUserAddRows' ] (https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.canuseraddrows (v = vs.110) .aspx) установлено значение true (значение по умолчанию), тогда пользователь должен иметь возможность для добавления новых строк, но для этого нужен конструктор без параметров. Или добавьте пустой 'Person' в' ObservableCollection' – dkozl

ответ

2

Добавить стандартный конструктор для наблюдаемого класса (вы можете сделать класс обертку, если вам нужно, чтобы отличать его)

public class Person 
{ 
    public Person() 
    { 
+0

Спасибо Machine Learning, это решение! – Vahid

Смежные вопросы