WPF Datagrid允许用户添加行

时间:2017-02-06 12:43:25

标签: c# wpf datagrid

我想允许用户在数据网格中添加行。我知道来自WinForms的Datagridview,并且在Datagrid的底部总是有一条空行,我可以填充数据。

<DataGrid x:Name="dgv" 
          Grid.ColumnSpan="4" 
          Grid.Row="1" 
          CanUserAddRows="True" 
          CanUserDeleteRows="True" 
          SelectionUnit="FullRow" 
          AutoGenerateColumns="False" 
          ItemsSource="{Binding Entries}">
        <DataGrid.Columns>
            <DataGridComboBoxColumn Header="Anrede" Width="1*"></DataGridComboBoxColumn>
            <DataGridTextColumn Header="Vorname" Width="2*" Binding="{Binding Vorname}" />
            <DataGridTextColumn Header="Nachname" Width="2*" Binding="{Binding Nachname}" />
        </DataGrid.Columns>
    </DataGrid>

代码背后:

public ObservableCollection<Mitreisender> Entries { get; }

public aufenthaltsWindow()
{
    InitializeComponent();
    Entries = new ObservableCollection<Mitreisender>();
}

班级

public class Mitreisender
{
    public int MitreisenderID { get; set; }
    public Gast.AnredeTyp Anrede { get; set; }
    public string Titel { get; set; }
    public string Vorname { get; set; }
    public string Nachname { get; set; }

    public virtual Aufenthalt Aufenthalt { get; set; }

    public Mitreisender()
    {

    }
}

2 个答案:

答案 0 :(得分:2)

您需要将DataGrid.ItemsSource设置为可修改的集合。假设您的DataContext包含属性

public ObservableCollection<EntryViewModel> Entries { get; }

class EntryViewModel // probably derive some ViewModelBase and implement INotifyPropertyChanged
{
    public string Vorname { get; set; }
    // ... other properties
}

然后将集合从datacontext绑定到itemssource。

<DataGrid x:Name="dgv" ItemsSource="{Binding Entries}" ...>

通过可修改的集合和您的设置,可以使用额外的新项目行。您仍然需要将列绑定到实际的项属性,我不是在这里解决这个部分。

答案 1 :(得分:2)

确保Mitreisender类具有无参数构造函数:

public Mitreisender()
{

}

这是显示空白“添加”行所必需的。

还要确保绑定有效,并且已将DataGrid或其父窗口的DataContext设置为定义了Entries属性的类的实例:

public aufenthaltsWindow()
{
    InitializeComponent();
    Entries = new ObservableCollection<Mitreisender>();
    DataContext = this;
}