2012-05-10 17 views
1

私はLinqToSqlクラスの1つを拡張する部分クラスを持っています。この部分クラスでは、次の計算フィールドがあります。LinqToSql計算フィールドOnPropertyIDChanged

public bool IsInCluster 
    { 
     get 
     { 
      return Cluster != null; 
     } 
    } 

このフィールドにバインドされたグリッド列データが自動的に更新されるように、次の部分的な方法を実装しました。

partial void OnClusterIDChanged() 
    { 
     SendPropertyChanged("IsInCluster"); 
    } 

しかしOnClusterIDChangedメソッドが呼び出されません。次のコードに示すように、私は、クラスタのプロパティを更新する場合:

ます。private void ExecCreateClusterCommand()
{

 var cluster = new Cluster() 
     { 
      ID = Guid.NewGuid(), 
      MailService = AppState.CurrentMailService 
     }; 

     App.DataContext.Clusters.InsertOnSubmit(cluster); 

     foreach (DeliveryPoint deliveryPoint in SelectedDeliveryPoints) 
     { 
      deliveryPoint.Cluster = cluster; 
     } 

     App.DataContext.SubmitChanges();  

}

私は、計算されたフィールドに関連する他の非ナビゲーションプロパティでこのテクニックをうまく使用しました。この仕事をする方法はありますか?

答えて

0

私はこのために見つけることができる唯一のソリューションが必要なフィールド(ナビゲーションプロパティ)のためSendPropertyChangedを呼び出すために私を可能DeliveryPointクラスにパブリックメソッドを作成することでした。私のLinqToSQLで

 public void CallSendPropertyChanged(string propertyName) 
     { 
      SendPropertyChanged(propertyName); 
     } 
0

設定者がClusterの場合は、状態が変更された場合はOnClusterIDChangedに電話してください。

+0

クラスを生成何もありませんクラスター用のセッターの拡張性メソッド - OnClusterIDChangedのみ。 – daveywc

関連する問題