2012-01-19 13 views
3

セルフトラッキングエンティティを使用してWPFアプリケーションを作成しています。モデルの値が変更されたときに[保存]ボタンを無効/有効にしても問題ありません。通常、通常のEntity Frameworkモデルでは、ViewModelのModel.PropertyChangedイベントを購読するだけで、検証をチェックするSaveボタンと、保存ボタンを無効または有効にするRaisePropertyChangedがあります。セルフトラッキングエンティティの購読PropertyChangedイベント

何らかの理由で、Self-Tracking Entitiesで、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

関連する問題