Entity Framework 모델과 함께 MVVM 패턴을 사용하여 C#으로 데스크톱 응용 프로그램을 작성하고 있습니다. VM의 DependencyProperties를 사용하는 경향이 있으며 (일반적으로)이 시스템을 INotifyPropertyChanged를 구현하는 것보다 선호합니다. 나는 일들을 일관성있게 유지하고 싶다. 내 VM은 모델의 엔티티에 액세스하고 뷰포트에는 바인딩 및 명령 이름을 제외한 VM에 대한 지식이 없으며 모델은 VM의 지식을 알고 있습니다. 는 VM의에서 INotifyPropertyChanged를 사용Entity Framework에서 ViewModel에 DependencyProperty 사용
, 모델의 엔티티를 업데이트하는 아주 쉽게 보인다 CurrentPerson는 Person 객체 엔터티 데이터 모델에 의해 자동 생성 된 것입니다
public string Forename
{
get { return CurrentPerson.Forename; }
set
{
if (Forename != value)
{
CurrentPerson.Forename = value;
NotifyPropertyChanged("Forename");
}
}
}
.... 따라서 Forename을 저장하기 위해 특별히 만든 개인 필드가 없습니다.
DependencyProperties를 사용하면 DP를 만들고 GetValue 및 Setvalue를 사용하여 기본 속성을 추가 한 다음 PropertyPangedCallback을 사용하여 CurrentPerson 엔터티를 업데이트해야합니다. 이 상황에서 콜백을 호출하면 다른 VM과 일관성을 유지하기 위해 오버 헤드가 추가되는 것으로 보입니다.
따라서이 두 가지 방법 중 하나가 다른 방법인지 여부는 이어야합니다.해야합니까? 이 인스턴스에서는 DependencyProperty 또는 INotifyPropertyChanged를 사용해야합니까? 한 가지 지적해야 할 점은 잠재적으로 매우 큰 규모의 프로젝트 (플러그인과 여러 컴퓨터에서 많은 데이터베이스 액세스가 가능함)이며 모든 것이 재사용 가능해야하며 모듈은 가능한 한 "연결이 끊어져"있어야한다는 것입니다. .
뷰 모델에서 종속성 속성을 사용하는 이점은 무엇입니까? 다시 말해 INotifyPropertyChanged가 제공하는 추가적인 가치는 무엇입니까? –
나는 좋은 속도와 DP와 함께 제공되는 멋진 바인딩 기능을 찾고 있습니다. 내 뷰에서 XAML을 사용하여 DP에 직접 바인딩한다는 점을 명심하십시오. 또한 부동산 가격이 자주 바뀔 수 있습니다. 바인딩과 함께 속도를 위해 이전에 찾은 참조에서 DP가 갈 수있는 방법입니다. 나머지 디자인과도 일관성이 있습니다. 그러나 Entity 객체에 대한 별도의 수정을 통해 진행되는 모든 콜백에 의해 무효화되는 경우 아무런 이점이 없습니다. –