DataGrid 中的 DatePicker 不更新绑定对象
Posted
技术标签:
【中文标题】DataGrid 中的 DatePicker 不更新绑定对象【英文标题】:DatePicker in DataGrid does not update bound object 【发布时间】:2011-07-01 14:14:09 【问题描述】:我在 DataGrid 中有 DatePicker:
<DataGridTemplateColumn Header="Next Date" Width="100" >
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DatePicker SelectedDate="Binding NextDate, Mode=TwoWay, Converter=StaticResource dateConverter" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker Text="Binding NextDate, Mode=TwoWay, Converter=StaticResource dateConverter" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
它绑定到定义属性 NextDate 的对象(NextDate 很长,我使用转换器在 long 和 DateTime 之间切换):
public long NextDate
get return _nextDate;
set
if (_nextDate != value)
_nextDate = value;
NotifyPropertyChanged("NextDate");
问题是,当我通过键入或在下拉日历中选择更改网格中的日期时,NextDate 属性不会更改。 有什么想法吗?
【问题讨论】:
【参考方案1】:尝试在绑定中设置UpdateSourceTrigger
。以下对我来说工作正常
PropertyChanged
为SelectedDate
LostFocus
为Text
另外,尝试在调试器的转换器中设置断点,以确保它被命中
Xaml
<DataGridTemplateColumn Header="Next Date" Width="100" >
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DatePicker SelectedDate="Binding NextDate,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged,
Converter=StaticResource dateConverter" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker Text="Binding NextDate,
Mode=TwoWay,
UpdateSourceTrigger=LostFocus,
Converter=StaticResource dateConverter" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
【讨论】:
UpdateSourceTrigger 帮助了,现在一切正常。非常感谢!以上是关于DataGrid 中的 DatePicker 不更新绑定对象的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Java 变量不更频繁地声明为“final”?与 swift 中的 let 关键字进行比较 [关闭]