DataGrid中的DatePicker不更新绑定对象

Vad*_*dim 4 wpf datagrid datepicker

我在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>
Run Code Online (Sandbox Code Playgroud)

它绑定到定义属性NextDate的对象(NextDate很长,我使用转换器在long和DateTime之间):

public long NextDate
{
    get { return _nextDate; }
    set
    {
        if (_nextDate != value)
        {
            _nextDate = value;
            NotifyPropertyChanged("NextDate");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是当我在网格中更改日期时,通过键入或在下拉日历中选择,NextDate属性不会更改.有任何想法吗?

Fre*_*lad 11

尝试UpdateSourceTrigger在Bindings中设置.以下对我来说工作正常

  • 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>
Run Code Online (Sandbox Code Playgroud)

  • UpdateSourceTrigger有所帮助,现在一切正常.非常感谢你! (3认同)