2

我有一个简单的 Datagrid 从 ViewModel 绑定到 ObservableCollection。此 ObservableCollection 由自定义类型组成,例如 ObservableCollection。

ComplexType 只有 2 个属性,并且只有一个在屏幕上是可编辑的。另一个是依赖于第一个的布尔类型。

当我编辑第一个属性时,它会反映到 ComplexType 并且它还会更改第二个属性。但是第二个属性在屏幕上没有改变。

如何更新屏幕上的第二个属性?

4

2 回答 2

3

试试这个:

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;
}
于 2013-01-18T15:27:34.573 回答
2

仅当添加、删除项目或刷新整个集合时,可观察集合才提供通知。如果您希望 UI 在更改时刷新,则需要确保每个属性都引发 PropertyChanged 事件或者是依赖属性。

于 2013-01-18T14:05:21.523 回答