2012-07-03 2 views
3

MVVM 패턴을 사용하여 C# 응용 프로그램을 작성 중이며 속성 단위로 변경 내용 추적을 구현하는 가장 좋은 방법이 무엇인지 궁금합니다. 현재 INotofyPropertyChanged가 구현되어 있으며 전체 객체가 더티인지 여부에 관계없이 플래그를 구현하지만 구현해야하는 일부 요구 사항은 변경된 모든 속성에 대해 UI의 텍스트 상자에 이미지를 표시 할 수있게하려는 것입니다.속성 변경 추적 당 구현

기본적으로 내보기 모델에는 모두 내 DataAccess 레이어의 데이터를 포함하는 내 클래스 인 개인 필드가 있습니다. 그래서 기본적으로 클래스는 다음과 같이 표시됩니다

private BusinessObj _data 


public Name 
{ 
    get{ return _data.Name;} 
    set 
    { 
     if(_data.Name != value) 
     { 
      _data.Name = value; 
      PropertyChanged("Name"); 
      IsDirty = true; 
     } 
    } 
} 

내 데이터 액세스 레이어는 기본적으로 직렬화 및 우리의 제품을 구성하는 XAML 프로파일을 역 직렬화된다.

+0

나는 원본을 저장하고 원본과 현재 값을 비교하는 것입니다. 이렇게하면 변경 사항을 되돌릴 수 있습니다. – cadrell0

+0

개체가이를 추적해야합니까? 당신의 객체가 이미'INotifyPropertyChanged'를 구현 했으므로 그 이벤트에 가입하고 변경된 속성의 목록을 유지할 수 있습니까? – hvd

+0

@hvd 내가 추적했다면 텍스트 상자에 글자를 입력 할 때마다 업데이트를 받게 될 것이고, UI가 별표를 그려야한다는 것을 알 수 있도록 원본과 다른 경우에만 관심이 있습니다. – twreid

답변

0

모델 클래스에 ObservableCollection을 사용하고 관찰 가능한 비즈니스 데이터 수집이 변경되면 UI에 이벤트를 구독하도록 할 수 있습니다. UI

에서 모델보기

public class BusinessObjList : ObservableCollection<BusinessObj> 
{ 
    public BusinessObjList() : base() 

    public void AddBusinessObj 
    { 
     // your own manipulation 
    } 
} 

에서

BusinessObjList BL = new BL(); 
BL.CollectionChanged += new NotifyCollectionChangedEventHandler(bl_CollectionChanged); 

static void bl_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
{ 
    // handle the change in UI. 
}