gpt4 book ai didi

c# - OnPropertyChange 触发顺序

转载 作者:太空狗 更新时间:2023-10-29 21:58:48 26 4
gpt4 key购买 nike

我有一个应用程序,您可以在其中选择列表框中的不同对象。当您选择一个对象时,它会更改控件的 View 模型。该控件使用 CodePlex 中的时间线控件,因此,我将时间线数据的 StartDate 和 EndDate 绑定(bind)到 ViewModel。更改 ViewModel 时,有时会出现错误:

ArgumentOutOfRangeException: MaxDateTime cannot be less then MinDateTime

只有当我从较晚的日期转到较早的日期时才会发生这种情况。我很确定这是由于属性自动更新到 View 的方式所致。这是相关的 XAML。

MaxDateTime="{Binding Path=RecordingEnd}" 
MinDateTime="{Binding Path=RecordingStart}"
CurrentDateTime="{Binding Path=CurrentDateTime, Mode=TwoWay}"

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");
}
}

这个问题有办法解决吗?有没有办法告诉 WPF 应该更新对象中的参数的顺序?

更新:我最终使用了@colinsmith 响应的变体:

public MyObjectViewModel MyObject {
get { return myObject; }
set
{
myObject= new MyObjectViewModel();
OnPropertyChanged("MyObject");

myObject= value;
OnPropertyChanged("MyObject");
}
}

最佳答案

你能试试这个吗:

public MyObjectViewModel MyObject            {
get { return myObject; }
set
{
myObject=null;
OnPropertyChanged("MyObject");

myObject= value;
OnPropertyChanged("MyObject");
}
}

关于c# - OnPropertyChange 触发顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11971924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com