我有一个简单的 Datagrid 从 ViewModel 绑定到 ObservableCollection。此 ObservableCollection 由自定义类型组成,例如 ObservableCollection。
ComplexType 只有 2 个属性,并且只有一个在屏幕上是可编辑的。另一个是依赖于第一个的布尔类型。
当我编辑第一个属性时,它会反映到 ComplexType 并且它还会更改第二个属性。但是第二个属性在屏幕上没有改变。
如何更新屏幕上的第二个属性?
我有一个简单的 Datagrid 从 ViewModel 绑定到 ObservableCollection。此 ObservableCollection 由自定义类型组成,例如 ObservableCollection。
ComplexType 只有 2 个属性,并且只有一个在屏幕上是可编辑的。另一个是依赖于第一个的布尔类型。
当我编辑第一个属性时,它会反映到 ComplexType 并且它还会更改第二个属性。但是第二个属性在屏幕上没有改变。
如何更新屏幕上的第二个属性?
试试这个:
public class ComplexType:INotifyPropertyChanged
{
private object someProperty1;
public object SomeProperty1
{
get{return someProperty1;}
set
{
someProperty1=value;
SomeProperty2=somefunc(someProperty1);
If(PropertyChanged!=null){PropertyChanged(this, new PropertyChangedEventArgs(SomeProperty1));}
}
}
private object someProperty2;
public object SomeProperty2
{
get{return someProperty2;}
set
{
someProperty2=value;
If(PropertyChanged!=null){PropertyChanged(this, new PropertyChangedEventArgs(SomeProperty2));}
}
public event PropertyChangedEventHandler PropertyChanged;
}
仅当添加、删除项目或刷新整个集合时,可观察集合才提供通知。如果您希望 UI 在更改时刷新,则需要确保每个属性都引发 PropertyChanged 事件或者是依赖属性。