我在Silverlight控件中有一个包含自定义控件的DataGrid。这些自定义控件也在网格外部使用,并且工作正常。然而,当在网格中使用时,它们似乎在焦点丢失时自行重置(即我们移动到另一个单元格)。
为了测试它不是我的自定义控件,我添加了一个包含AutoComplete框的列。当在框中键入并标签到下一列时,该框将被清除。
调试时我可以看到控件加载事件在我们从中失去焦点后被调用,这确认了它在移动到下一个字段时被重新加载/重新创建!是不是因为某些原因而没有将更改提交给网格?
e.g。 XAML(非常基本,这里没什么奇怪的)
<sdk:DataGridTemplateColumn Header="Description">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<sdk:AutoCompleteBox Name="Description" Width="100" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
答案 0 :(得分:1)
这是完全正常的 - 在渲染单元格时使用CellTemplate,如果打开虚拟化,当行滚出视图时会被破坏。
当网格单元格进入编辑模式时使用CellEditingTemplate,此时您的编辑控件将被创建 - IOW编辑控件是按需创建的。只关注单元格不足以将单元格置于编辑模式中。