我在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属性不会更改。
有任何想法吗?
最佳答案
尝试在绑定中设置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>