我有一个应用程序,您可以在ListBox中的不同对象之间进行选择.选择对象时,它会更改控件的viewmodel.该控件从CodePlex获取时间轴控件,因此,我将StartDate和EndDate用于绑定到ViewModel的时间轴数据.ViewModel更改后,我有时会收到错误:
ArgumentOutOfRangeException: MaxDateTime cannot be less then MinDateTime
Run Code Online (Sandbox Code Playgroud)
这只发生在我从较晚的日期到较早的日期.我很确定这是由于属性自动更新到视图的方式.这是相关的XAML.
MaxDateTime="{Binding Path=RecordingEnd}"
MinDateTime="{Binding Path=RecordingStart}"
CurrentDateTime="{Binding Path=CurrentDateTime, Mode=TwoWay}"
Run Code Online (Sandbox Code Playgroud)
ViewModel有这个:
private int myObjectIndex;
public int MyObjectIndex
{
get { return myObjectIndex; }
set { myObjectIndex = value; OnPropertyChanged("MyObjectIndex"); MyObject = MyObjects[myObjectIndex]; }
}
private MyObjectViewModel myObject=new MyObjectViewModel();
public MyObjectViewModel MyObject {
get { return myObject; }
set
{
myObject= value;
OnPropertyChanged("MyObject");
}
}
Run Code Online (Sandbox Code Playgroud)
有没有解决这个问题的方法?有没有办法告诉WPF应该更新对象中的参数的顺序?
更新:我最终使用了@colinsmith的回复变体:
public MyObjectViewModel MyObject {
get { return myObject; }
set
{
myObject= new MyObjectViewModel();
OnPropertyChanged("MyObject");
myObject= value;
OnPropertyChanged("MyObject"); …Run Code Online (Sandbox Code Playgroud)