WPF Datagrid 允许用户添加行

Mat*_*ttl 1 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>
Run Code Online (Sandbox Code Playgroud)

背后代码:

public ObservableCollection<Mitreisender> Entries { get; }

public aufenthaltsWindow()
{
    InitializeComponent();
    Entries = new ObservableCollection<Mitreisender>();
}
Run Code Online (Sandbox Code Playgroud)

班上

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()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

mm8*_*mm8 5

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

public Mitreisender()
{

}
Run Code Online (Sandbox Code Playgroud)

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

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

public aufenthaltsWindow()
{
    InitializeComponent();
    Entries = new ObservableCollection<Mitreisender>();
    DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)