내 View 모델에서보기에서 참조하는 여러 개의 읽기 전용 속성이 있으며 그 중 일부는 하나 이상의 다른 읽기 전용 속성 (동일한 View Model) 하나 이상의 읽기/쓰기 속성 (동일한보기 모델에서)에 궁극적으로 의존합니다. 나는 단지 잠재적으로 영향을받는 모든 속성에 대해 PropertyChanged
이벤트가 발생했는지 확인하기 위해 샘플에서 다음 패턴을 보았지만 모든 RaisePropertyChanged 호출을 복제하는 것을 좋아하지 않습니다.계단식 읽기 전용 속성의 중복 RaisePropertyChanged 방지
은 내가 대신에 의존하는 속성을 가지고 각 속성에 대한, 내보기 모델의 PropertyChanged
이벤트로 그 핸들러에 핸들러를 추가해야한다 의심 만 등록 직접 (대 또한 사람에 RaisePropertyChanged 전화 그 간접적으로)는 해당 속성에 따라 다릅니다. RaisePropertyChanged Call을 모두 복제하지 않으려면 어떻게해야합니까?
public bool MyReadOnlyPropertyAA1
{
get
{
return MyReadOnlyPropertyA1 [&& MyReadOnlyPropertyB1 ...]
}
}
public bool MyReadOnlyPropertyA1
{
get
{
return (MyPropertyA == (Some Value)) [&& MyPropertyB == (Some Other Value)) ... ]
}
}
public MyPropertyAType MyPropertyA
{
get
{
return myPropertyA
}
set
{
myPropertyA = value;
RaisePropertyChanged(nameof(MyPropertyA));
RaisePropertyChanged(nameof(MyReadOnlyPropertyA));
RaisePropertyChanged(nameof(MyReadOnlyPropertyA1));
RaisePropertyChanged(nameof(MyReadOnlyPropertyAA1));
...
RaisePropertyChanged(nameof(MyReadOnlyPropertyAA...1));
}
}
public MyPropertyBType MyPropertyB
{
get
{
return myPropertyB
}
set
{
myPropertyB = value;
RaisePropertyChanged(nameof(MyPropertyB));
RaisePropertyChanged(nameof(MyReadOnlyPropertyA));
RaisePropertyChanged(nameof(MyReadOnlyPropertyA1));
RaisePropertyChanged(nameof(MyReadOnlyPropertyAA1));
...
RaisePropertyChanged(nameof(MyReadOnlyPropertyAA...1));
}
}
_read-only_properties에 대한 실행 속성 변경 이벤트는 어리 석음의 높이입니다. 코드의 사용자에게 속성이 읽기 전용이라는 인상을 주면 그대로 두십시오. 다른 속성을 변경하면 디자인에 영향을 미치지 않아야합니다. – MickyD
@MickyD 속성이 읽기 전용이기 때문에 속성 값이 일정하다는 의미는 아닙니다. 단지 세터를 통해 속성을 수정할 수 없다는 것을 의미합니다. – Iqon
당신이 원하는 것을 성취 할 수있는 방법은 여러 가지가 있지만, 거의 모두 당신이 피하려고하는 것과 못 생겼습니다. 바인딩/다중 바인딩 및 변환기를 사용하는 대신 읽기 전용 속성을 만드는 것이 전부입니다. – CrudaLilium