我有一些奇怪的问题。
我有
<Custom:DataGridTemplateColumn Header="Дата выдачи" Width="130" >
<Custom:DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<Custom:DatePicker SelectedDate="{Binding LicenseDateStart}" />
</DataTemplate>
</Custom:DataGridTemplateColumn.CellTemplate>
</Custom:DataGridTemplateColumn>
和这个
public ObservableCollection<OrgInfoProftraining> ListOrgInfoProftraining
{
get
{
return new ObservableCollection<OrgInfoProftraining>(_ListOrgInfoProftraining);
}
set
{
_ListOrgInfoProftraining = value.ToList();
OnPropertyChanged("ListOrgInfoProftraining");
}
}
我填充第一行,然后点击另一个控件(行失去焦点)和datepicker(或其值)骑到第2行。为什么? 填写row1后,我点击回车,工作正确。
P.S。我猜它可以是ObservableCollection,当我在datepicker上选择日期时,它可以对templatecolumn中的更改作出反应并创建新项目...
答案 0 :(得分:0)
好吧,当我们使用MVVM和datagrid时,当我们向datagrid添加新行时,我们无法捕获事件行创建,因此view-model不知道新元素。
我添加了两个按钮&#34;添加&#34;并且&#34;删除&#34;没关系。 可能不是很好的解决方案,但它很快=)
答案 1 :(得分:0)
问题出现是因为单元格模板被重用于下一行,所以这里有一些假设是一个解决方案
您需要分隔单元格模板和编辑模板,或者至少在非编辑模式下将IsEnabled设置为false
例如
<Custom:DataGridTemplateColumn Header="Дата выдачи"
Width="130">
<Custom:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding LicenseDateStart}" />
</DataTemplate>
</Custom:DataGridTemplateColumn.CellTemplate>
<Custom:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<Custom:DatePicker SelectedDate="{Binding LicenseDateStart}" />
</DataTemplate>
</Custom:DataGridTemplateColumn.CellEditingTemplate>
</Custom:DataGridTemplateColumn>
或
<Custom:DataGridTemplateColumn Header="Дата выдачи"
Width="130">
<Custom:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Custom:DatePicker SelectedDate="{Binding LicenseDateStart}" IsEnabled="False"/>
</DataTemplate>
</Custom:DataGridTemplateColumn.CellTemplate>
<Custom:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<Custom:DatePicker SelectedDate="{Binding LicenseDateStart}" />
</DataTemplate>
</Custom:DataGridTemplateColumn.CellEditingTemplate>
</Custom:DataGridTemplateColumn>