【发布时间】:2014-03-11 15:34:41
【问题描述】:
我有以下数据网格:
<DataGrid ItemsSource="{Binding EmployeeList}" CanUserAddRows="True" AutoGenerateColumns="False" Margin="0,0,0,90">
<DataGrid.Columns>
<DataGridTemplateColumn Header="CountryCombo2">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=DataContext.CountryList, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
DisplayMemberPath="CountryName"
SelectedItem="{Binding EmployeeCountry, Mode=TwoWay}"
SelectedValue="{Binding EmployeeCountry.CountryId}"
SelectedValuePath="CountryId" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
但是,我无法向 DataGrid 添加新行。如果我需要提供任何其他代码,请告诉我。
更新:
屏幕 1:这是窗口刚加载硬编码属性值时的屏幕截图。现在我看到了空的新行。
屏幕 2:在这里,我已将数据添加到具有 Rambo 和 Russia 值的新行中。现在,无论我做什么(制表符,单击另一个单元格),都不会添加下一个新行。我相信它应该添加一个新行。
屏幕 3:此处新添加的行值已消失。那是因为我双击了两个空单元格之间的细边框。现在这很奇怪。
屏幕 4:现在,当我单击 Peter 单元格时,先前输入的行数据又回来了,但现在它被向下推,并在其前面插入了一个新的空行。这很奇怪。
谁能帮我理解 DataGrid 的这种行为?
【问题讨论】:
-
可以肯定的是,您在 DataGrid 的底部看到了一个空行,对吗?应该发生的是,如果您在该行中输入内容,则新行将自动出现在 DataGrid 的底部。这是您期望但没有看到的行为吗?抱歉,这似乎是一个显而易见的问题,但有时人们的期望并不明显。
-
是的@ouflak,这就是我所期待的行为。但我没有让新行自动出现在 DataGrid 的底部。
-
您的 ItemsSource 的类型是什么?类型 T 必须有无参数构造函数。当我回到我的办公室时,我会尝试一下。
-
我错过了无参数构造函数。感谢您指出这一点。尽管我在 DataGrid 中遇到了另一个奇怪的问题。请参考我的问题的更新部分。
-
你更新了吗?没有看到它...可能刷新不起作用....
标签: wpf datagrid datagridtemplatecolumn