2012-01-19 2 views
3

셀프 추적 엔티티를 사용하여 WPF 애플리케이션을 작성 중입니다. 내 모델의 값이 변경되면 내 저장 버튼을 사용 또는 사용하지 않도록 설정하는 데 문제가 있습니다. 일반적으로 일반 Entity Framework 모델에서는 ViewModel의 Model.PropertyChanged 이벤트에 간단히 가입 할 수 있습니다. 그런 다음 유효성 검사를 확인하고 내 저장 단추를 사용 안 함으로 설정하거나 내 저장 단추를 사용하도록 설정하는 내 저장 단추에 대해 RaisePropertyChanged를 사용할 수 있습니다.자체 추적 엔티티 구독하기 PropertyChanged 이벤트

셀프 추적 엔티티의 경우 Model.PropertyChanged 이벤트가 protected로 표시되어 ViewModel에서 직접 구독 할 수없는 것으로 나타났습니다. T4 템플릿을 수정하지 않고이 이벤트에 가입 할 수있는 방법이 있습니까 ??

protected virtual void OnPropertyChanged(String propertyName) 
    { 
     if (ChangeTracker.State != ObjectState.Added && ChangeTracker.State != ObjectState.Deleted) 
     { 
      ChangeTracker.State = ObjectState.Modified; 
     } 
     if (_propertyChanged != null) 
     { 
      _propertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    protected virtual void OnNavigationPropertyChanged(String propertyName) 
    { 
     if (_propertyChanged != null) 
     { 
      _propertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged{ add { _propertyChanged += value; } remove { _propertyChanged -= value; } } 
    private event PropertyChangedEventHandler _propertyChanged; 
    private ObjectChangeTracker _changeTracker; 

답변

0

저는 항상 방금 템플릿을 보호하지 않도록 수정했습니다. 그것은 이유를위한 템플릿입니다

내부적으로 PropertyChanged 알림을 발생시키는 클래스에 공용 메서드를 만드는 것이 대안이라고 생각합니다.

partial class MyModel 
{ 
    public RaiseEFPropertyChanged(string propertyName) 
    { 
     RaisePropertyChanged(propertyName); 
    } 
} 
+0

나는 템플릿을 수정하여 작업을 훌륭하게 수행 한 것 같습니다. 내가 생각했던 것보다 쉬웠다. 감사! – ccorrin

관련 문제