WPF DatePicker在字段更改时更改IsEnabled和DisplayDateStart以及DisplayDateEnd

时间:2016-03-17 21:58:59

标签: c# wpf xaml datepicker

我是WPF新手,我正在努力改变日期选择器的IsEnabled状态和DisplayDateStart以及DisplayDateEnd属性。通过执行以下操作,我已成功将我的XAML视图绑定到我的ViewModel:

<DatePicker  IsEnabled="{Binding MyModel.IsDatePickerEnabled}" Name="EndDate"   Loaded="ChaneDatePickerPlaceholderOnLoad" SelectedDate="{Binding MyModel.EndDate, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"/>

如果你看到,datepicker的IsEnabled绑定到我模型上的属性。此属性应取决于是否可以解析某个CSV文件。以类似的方式,应使用CSV中包含的已解析日期更新DisplayDateEnd。我的视图模型定义如下:

public class MyViewModel
{
    public MyViewModel(){
        MyModel = new MyModel();
    }
    public MyModel MyModel {get; set;}
}

我的模特是:

public class MyModel : INotifyPropertyChanged, IDataErrorInfo
{
    public MyModel(){
        CSVParser = new CSVParser();
    }
    public CSVParser CSVParser {get; set;}
    private string _sourceCSVRoute;
    public override string SourceCSVRoute
    {
        get { return _sourceCSVRoute; }
        set
        {
            _sourceCSVRoute= value;
            OnPropertyChanged("SourceCSVRoute");
            OnPropertyChanged("EndDate");
            OnPropertyChanged("StartDate");
        }
    }
    private DateTime? _startDate;
    public DateTime? StartDate
    {
        get
        {
            return _startDate;
        }
        set
        {
            _startDate = value;
            OnPropertyChanged("StartDate");
            OnPropertyChanged("EndDate");
        }
    }

    private DateTime? _endDate;

    public DateTime? EndDate
    {
        get
        {
            return _endDate;
        }
        set
        {
            _endDate = value;
            OnPropertyChanged("EndDate");
            OnPropertyChanged("StartDate");
        }
    }
    public IsDatePickerEnabled{
        get{
            return CSVParser.CanParseCSV(SourceCSVRoute);
       }
    }
}

所以,我的问题是第一次运行时,IsDatePickerEnabled属性被正确绑定,但是我希望每当SourceCSVRoute更改时都会更新此属性。我怎么能做到这一点?我尝试在setCS中为SourceCSVRoute属性调用OnPropertyChanged("StartDate")但没有成功。 谢谢!

0 个答案:

没有答案