DynamicObject에서 파생 된 WPF 프로젝트 용 BaseViewModel을 만드는 중입니다. 엔티티의 속성 변경을 처리하는 방법을 잘 모르겠습니다. (viewmodel의 주 엔터티의 탐색 속성)과 관련이 있습니다. 예를 들어MVVM DynamicObject + Entity Framework STE 엔터티 + 속성 변경 동작
:
VM은 :
public class CustomerCRUDViewModel: BaseEntityViewModel<Customer>
{
...
}
이것은 예를 들어, 고객 CRUD의 VM을 것입니다. 예를 들어 Customer 엔티티는 Address (Address 유형의 엔티티)라는 탐색 속성을 가지고 있습니다.
이제보기가 Address 내의 속성에보기를 바인딩 할 때 변경 사항이 VM에보고되지 않고 엔티티에 직접보고되므로 VM 수준에 정의 된 동작이 트리거되지 않습니다.
나는 설명이 충분하지 않을 수도 있다는 것을 알고, 나는 단지 내 가난한 영어로 자신을 더 잘 설명하는 법을 모른다.
내 질문은 : 일반적인 DynamicObject 기반 VM이 기본 엔터티의 일부가 아닌 속성에 대한 동작을 정의해야하는 시나리오를 어떻게 처리합니까?
그 해결책은 전체 그래프에서 각 엔티티에 대한 Propertychanged 이벤트에 가입해야하며 이는 나에게 너무 우아하지 않습니다. 게다가 모델 이벤트에 VM을 등록해야한다는 사실을 좋아하지 않습니다. 다른 모델이 표시 될 때마다 구독하고 구독 취소해야하기 때문입니다. 나는 또한 프레임 워크 수준에서 구현할 수있는 제네릭 솔루션을 찾고있다. (나는 추상적 인 BaseViewModel 레벨을 의미한다.) –
어쨌든 프레임 워크의 일부가되어야하는 일종의 등록/등록 취소 기능이 필요할 것이다. 하지만 아마도 이것은 더 우아한 접근 일 것입니다. 메소드가있는 IModel과 같은 인터페이스를 도입 해보십시오. RegisterCallback (Action 콜백)을 사용하여 모델로부터 피드백을받습니다. 하나의 ViewModel과 통신하는 모델이 하나뿐이므로이 방법이 더 좋습니다. 그런 다음 ViewModel이 새 모델이 도입 될 때마다 새 콜백을 등록/등록 취소하도록합니다. 마지막으로 IModel을 구현하는 클래스에 제네릭 클래스 정의를 제한합니다. –