【问题标题】:change datepicker date with a previous chosen date in wpf用 wpf 中先前选择的日期更改 datepicker 日期
【发布时间】:2015-09-23 07:15:38
【问题描述】:

尝试通过属性绑定 Datepicker 上的 Date 来更改它。 如果我设置为 DateTime.Now 值。然后它工作。但如果我将日期选择器字段清空并失去焦点,我想设置为之前选择的日期。

    public DateTime? Date
    {
        get
        {
            return _previousChosenDateTime = Smilefjestilsyn.Dato;
        }
        set
        {
            if (value != null)
            {
                _previousChosenDateTime = value;
            }
        }
    }

XAML 代码。

   <DatePicker Style="{StaticResource TabSkipableDatePicker}" 
                        Margin="-8,8,0,0" 
                        Background="Transparent" 
                        BorderBrush="Transparent" 
                        SelectedDate="{Binding Date, StringFormat=dd/MM/yyyy, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 
                        Grid.Row="6" 
                        Grid.Column="2"/>

【问题讨论】:

  • 首先将 INotifyPropertyChanged 实现添加到 Date 属性中。

标签: c# .net wpf


【解决方案1】:

第一个:返回_previousChosenDateTime = Smilefjestilsyn.Dato;总是返回 Smilefjestilsyn.Dato 所以你可能想要改变它。

毕竟,我相信您遇到的主要问题是 DatePicker 的“显示”,当用户明确删除文本框中的所有内容并且出现水印“选择日期”而不是“perivousdate”时。您可能需要绑定 DatePicker 的“文本”属性才能正确处理

以下应该可以,但我想知道是否有更好的解决方案。有点丑

public class MainViewModel : ViewModelBase
{
    private readonly DateTime _somePreviousDate = DateTime.Today.AddDays(-2);

    private DateTime? _startDateSelected;
    public DateTime? StartDateSelected
    {
        get
        {
            return _startDateSelected.HasValue ? _startDateSelected : _somePreviousDate;
        }
        set
        {
            _startDateSelected = value.HasValue ? value : _somePreviousDate;

            OnPropertyChanged("StartDateSelected");
            OnPropertyChanged("StartDateSelectedString");
        }
    }

    public string StartDateSelectedString
    {
        get { return StartDateSelected.ToString(); }
    }
}


        <DatePicker Height="25" HorizontalAlignment="Left" VerticalAlignment="Top" Width="115" 
                    SelectedDate="{Binding StartDateSelected, Mode=TwoWay}"
                    Text="{Binding StartDateSelectedString}">
        </DatePicker>

【讨论】:

    猜你喜欢
    • 2017-04-28
    • 2014-01-06
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多