1

私の Wpf アプリには、2 つの TimePicker があります。それらにバインディングを使用しましたが、時間が更新されません。また、これらの TimePickers に選択した日付を設定したいと思います。以下のようにバインドしようとしました。しかし、それはうまくいきません。ここでの実際の問題は、TimePickers が DataTemplate 内にあることです。

ここにxamlがあります:

<DataTemplate x:Key="EditableDataTemplate">
  <StackPanel Orientation="Horizontal" Width="596">
    <xctk:TimePicker Name="StartPicker" Value="{Binding StartValue, Mode=TwoWay, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Format="Custom" FormatString="hh:mm tt" Background="Yellow" Padding="0" Margin="0" BorderThickness="0" Width="100" EndTime="11:59:0"/>
    <xctk:TimePicker Name="EndPicker" Value="{Binding EndValue, Mode=TwoWay, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Format="Custom" FormatString="hh:mm tt" Background="Yellow" Padding="0" Margin="0" BorderThickness="0" Width="60" EndTime="11:59:0"/>
  </StackPanel>
</DataTemplate>

C# でのプロパティとのバインド:

    private DateTime _dateTime1;
    public DateTime StartValue
    {
        get
        {
            return _dateTime1;
        }
        set
        {
            _dateTime1 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
            OnPropertyChanged("StartValue");
        }
    }

    private DateTime _dateTime2;
    public DateTime EndValue
    {
        get
        {
            return _dateTime2;
        }
        set
        {
            _dateTime2 = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
            OnPropertyChanged("EndValue");
        }
    }

    protected virtual void OnPropertyChanged(String time)
    {
        if (System.String.IsNullOrEmpty(time))
        {
            return;
        }
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(time));
        }
    }

    #region INotifyPropertyChanged Members
    public event PropertyChangedEventHandler PropertyChanged;
    #endregion

いくつかのアイデアを提案してください。

4

1 に答える 1