多年来我们一直在运行WPF应用程序,它使用以下数据网格声明(简化):
<DataGridTemplateColumn Header="Employee" >
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ctrl:EmployeeSelectionControl Employee="{Binding Employee,UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Employee.DisplayName,FallbackValue='Add employee'}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
最近,客户告诉我们,通过CellEditingTemplate
无法再选择员工。奇怪的是,契约中EmployeeSelectionControl
的约束力从一天到另一天不再起作用。输出窗口中没有可见的绑定错误,我不知道,问题可能是什么。
如果我只使用CellTemplate
并将EmployeeSelectionControl
放入其中,那么一切正常:
<DataGridTemplateColumn Header="Employee" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ctrl:EmployeeSelectionControl Employee="{Binding Employee,UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
CellEditingTemplate
中绑定的其他控件也会发生同样的情况。
有谁知道这可能是什么?最近几个月DataGrid有变化吗?
请注意 问题不在于绑定模式
Mode=TwoWay
这由Employee-Dependency属性声明指定为默认值(FrameworkPropertyMetadataOptions.BindsTwoWayByDefault
)