如何调试 setter 不在 Timepicker 属性 上触发?

How to debug setter not firing on Timepicker property?

概览: 我已将时间选择器控件添加到我的 UI 并将时间 属性 绑定到关联 ViewModel 上的日期时间 属性。

但是当我调试解决方案时,setter 不会被调用 属性 SelectedParkDuration

为了进一步调试,我检查了 UI 的数据上下文。正确设置了数据上下文并调用了 Timepicker 的 getter。

问题: 有谁知道为什么当我在运行时 select 时间选择器上的值时 setter 没有被调用?

时间选择器控件定义:

                   <TimePicker Grid.Row="2"
                    Grid.Column="1"
                    Width="270"
                    Height="100"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Bottom"
                    Header="Parking Duration"
                    Time="{Binding SelectedParkDuration}"
                    />

时间选择器 属性 - 在 UI 的 ViewModel 中定义的 SelectedParkDuration:

    private DateTime _selectedParkDuration;
    public DateTime SelectedParkDuration
    {
        get
        {
            return this._selectedParkDuration;
        }

        set
        {
            if (_selectedParkDuration != value)
            {
                _selectedParkDuration = value;
                RaisePropertyChanged("SelectedParkDuration");
            }
        }
    }

解决方案是按照@Ken Tucker 的建议指定双向绑定。 属性 的类型也需要是 TimeSpan:

类型
    private TimeSpan? _selectedParkDuration;
    public TimeSpan? SelectedParkDuration
    {
        get
        {
            return this._selectedParkDuration;
        }

        set
        {
            if (_selectedParkDuration != value)
            {
                _selectedParkDuration = value;
                RaisePropertyChanged("SelectedParkDuration");
            }
        }
    }

Xaml 时间选择器的定义:

<TimePicker Grid.Row="2"
                        Grid.Column="1"
                        Width="270"
                        Height="100"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Bottom"
                        Header="Parking Duration"
                        Time="{Binding SelectedParkDuration,
                                       Mode=TwoWay}" />