【问题标题】:WPF DatePicker not updating datasourceWPF DatePicker 不更新数据源
【发布时间】:2019-01-14 20:36:40
【问题描述】:

我有一个 WPF 数据网格(我实际上使用的是 Xceed DataGrid,但我认为绑定仍然有效)。我的网格中有一个 DatePicker 列,但是当我选择一个日期时,它不会更新我的基础数据源。有什么想法吗?

我已经试过了:

{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}
{Binding Path=., Mode=TwoWay}
{Binding Path=., UpdateSourceTrigger=PropertyChanged}
{Binding Path=.}
{Binding .}
{Binding}

XAML:

<xcdg:Column FieldName="NeedDateOverride" Title="NEED DATE (OVERRIDE)" Width="100">
    <xcdg:Column.CellContentTemplate>
        <DataTemplate x:Name="needDateOverrideTemplate">
            <DockPanel HorizontalAlignment="Stretch" LastChildFill="True">
                <DatePicker SelectedDate="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedDateChanged="NeedDateOverride_SelectedDateChanged" PreviewMouseDown="NeedDateOverride_GotFocus" CalendarOpened="NeedDateOverride_CalendarOpened"></DatePicker>
            </DockPanel>
        </DataTemplate>
    </xcdg:Column.CellContentTemplate>
</xcdg:Column>

C#:

public DateTime NeedDateOverride
{
    get
    {
        return this.needDateOverrideValue;
    }

    set
    {
        if (value != this.needDateOverrideValue)
        {
            this.needDateOverrideValue = value;
            NotifyPropertyChanged();
        }
    }
}

【问题讨论】:

  • 尝试指定相对来源。当我遇到这样的问题时,我尝试了相对来源并且它有效。 {Binding Path=.,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type YourAncestor}}} 抱歉,如果语法错误,我正在输入。也不确定您的 PropertyChanged。通常我使用 PropertyChanged 实现,它的名称类似于 NotifyPropertyChanged("needDateOverrideValue");
  • 您单元格的DataContext 是该行对应的对象。所以{Binding NeedDateOverride, ...}应该可以工作,如果我错了请纠正我并添加更多信息:你的DataGrid的来源是什么/NeedDateOverride在哪里定义/等等

标签: c# wpf xceed


【解决方案1】:

DatePicker 放在CellEditorEditTemplate 中。示例请参考documentationCellContentTemplate 用于在单元格未处于编辑模式时更改其外观。

如果你使用内置的DataGrid,你应该使用CellEditingTemplate而不是CellTemplate

【讨论】:

  • 这看起来很有希望,但是当所选日期更改时,它仍然不会更新我的数据源。事实上,只要我单击 DatePicker 并且它失去焦点,它就会恢复到以前在我的数据源中的日期。
  • @ChristianBoyer:如果将 SelectedDate 属性绑定到 {xcdg:CellEditorBinding} 会怎样?
  • 好的,现在 DatePicker 在失去焦点时保持它的价值,但我的数据源仍然没有更新
猜你喜欢
  • 1970-01-01
  • 2014-12-09
  • 2012-04-21
  • 1970-01-01
  • 2010-10-10
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多