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。以下对我来说工作正常

PropertyChangedSelectedDate LostFocusText

另外,尝试在调试器的转换器中设置断点,以确保它被命中

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 不更新绑定对象的主要内容,如果未能解决你的问题,请参考以下文章

Datepicker 输出格式 Datagrid wpf

WPF DatePicker 显示时间和日期

为啥 Java 变量不更频繁地声明为“final”?与 swift 中的 let 关键字进行比较 [关闭]

以编程方式为 DataGrid 创建 WPF DataGridTemplateColumn

汉语-成语:少不更事

为啥语言在语法上不更严格? [关闭]