我想允许用户在数据网格中添加行。我知道来自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()
{
}
}
答案 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;
}