我是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")
但没有成功。
谢谢!