DatePicker в DataGrid не обновляет связанный объект - PullRequest
4 голосов
/ 22 февраля 2011

У меня есть DatePicker в DataGrid:

<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 Ответ

10 голосов
/ 22 февраля 2011

Попробуйте установить 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...