2012-01-19 44 views
3

我在寫一個使用自我跟蹤實體的WPF應用程序。我遇到問題禁用/啓用我的保存按鈕,因爲我的模型的值已更改。通常使用常規實體框架模型,我可以簡單地訂閱ViewModel中的Model.PropertyChanged事件,然後使用RaisePropertyChanged爲我的保存按鈕,該按鈕用於檢查驗證和禁用或啓用我的保存按鈕。訂閱自我跟蹤實體PropertyChanged事件

出於某種原因,對於自我跟蹤實體,我注意到Model.PropertyChanged事件被標記爲受保護的,所以我無法直接在我的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