2017-02-13 5 views
0

は、私はこのようにそのクラスからのリストを作った私の見解モデルでこの基本クラス合計は

public class Contrat_Paye_Item 
    { 
     public int  CPI_TYPE { get; set; } 
     public string CPI_TEXT { get; set; } 
     public decimal CPI_AMOUNT { get; set; } 
    } 

にするとします。

listapayer.Add(new Contrat_Paye_Item() 
        { 
         CPI_TYPE = 0, 
         CPI_TEXT = "Loyer", 
         CPI_AMOUNT = 100 
        }); 


listapayer.Add(new Contrat_Paye_Item() 
        { 
         CPI_TYPE = 1, 
         CPI_TEXT = "charge 1", 
         CPI_AMOUNT = 200 
        }); 

listapayer.Add(new Contrat_Paye_Item() 
        { 
         CPI_TYPE = 1, 
         CPI_TEXT = "Charges 2", 
         CPI_AMOUNT = 300 
        }); 

ので、完全なリストは、3項目を含む、総量は600である。私は自分のCPI_typeが= 1項目のみでサブリストを追加し、このような問題がなく、リストボックスにそれをバインドしている私のviewmodelで

public ICollectionView ListCharges 
     { 
      get 
      { 


       var sub= new CollectionViewSource { Source = listapayer }.View; 
       sub.Filter = p => (p as Contrat_Paye_Item).CPI_TYPE == 1; 
       return sub; 
      } 
     } 

は今、私が表示したいものを私の項目のリストであります行は、サブリストの項目の合計の合計を含んでいます。それ第二のリストボックスに

何かのようなバインド:

loyer 100の

料金500

任意のアイデアは、先端は大歓迎です。サブを返す前に、このような何かを追加する方法について おかげ

答えて

0

方法:

 var d1 = (from a in sub.SourceCollection.OfType<Contrat_Paye_Item>() where a.CPI_TEXT == "Loyer" select a.CPI_AMOUNT).Sum(); 
     var d2 = (from a in sub.SourceCollection.OfType<Contrat_Paye_Item>() where a.CPI_TEXT.ToLower().StartsWith("charge") select a.CPI_AMOUNT).Sum(); 

     sub.AddNewItem(new Contrat_Paye_Item() { CPI_TEXT="Sum Loyer", CPI_AMOUNT = d1}); 
     sub.CommitNew(); 
     sub.AddNewItem(new Contrat_Paye_Item() { CPI_TEXT = "Sum Charges", CPI_AMOUNT = d2 }); 
     sub.CommitNew(); 

//編集

(注)このより柔軟な可能性として:

使用しないでください_CollectionViewSource _。その和リストを再作成することは私にとっては問題ではありません私は非常に小さなレコードを持っているので

 public ObservableCollection<Contrat_Paye_Item> ListCharges 
    { 
     get 
     { 
      return new ObservableCollection<Contrat_Paye_Item>((from a in listapayer where a.CPI_TYPE == 1 select a)); 
     } 
    } 
+0

感謝の男は、これは私のシナリオで動作します:代わりにのListBoxのItemsSourceとして以下を使用します。 私はこれを今のところ解決策としてマークしていますが、 – user2475096

+0

観測可能なパターンを使用していればそれはいいと思います。 コード明快さは言及していませんでしたが、実際にはクラスとリストの両方に対してINotifyPropertyChangedパターンを使用しています。 ObserableCollectionはこのスレッドからNotifyPropertyChangedという名前の変更されたOneです。 http://stackoverflow.com/questions/8490533/notify-observablecollection-when-item-changes アイテムの変更に関する通知を許可するため、サマリーとそのようなものは – user2475096

+0

なので、INotifyPropertyChangedとCollectionChangedを使用するソリューションはもっと便利です。 これについてのヒントは素晴らしいでしょう。 ps:整形された長いテキストとコードをコメントに投稿する方法はありますか?そうwierd:p – user2475096