2011-12-04 14 views
0

RadGridViewコントロールを使用するSilverlightアプリケーションがあります。ユーザーが列の値を更新すると、その合計が更新されると予想されます。この動作は、Telerikのデモサイトに表示されます。私はそれが私のビューモデルであることに感銘を受けた。確信はないけど。ここに私のビューのスニペットとビューモデルがあります。XAMLの配列インデックスによる双方向バインディング

ビュー

<telerik:RadGridView> 
    <telerik:GridViewDataColumn Header="Column1" DataMemberBinding="{Binding Path=Tally[0], Mode=TwoWay}"> 
    <telerik:GridViewDataColumn.AggregateFunctions> 
     <telerik:SumFunction ResultFormatString="{}{0:N2}" SourceField="Tally[0]" /> 
    </telerik:GridViewDataColumn.AggregateFunctions> 
    </telerik:GridViewDataColumn> 

    <telerik:GridViewDataColumn Header="Column2" DataMemberBinding="{Binding Path=Tally[1], Mode=TwoWay}"> 
    <telerik:GridViewDataColumn.AggregateFunctions> 
     <telerik:SumFunction ResultFormatString="{}{0:N2}" SourceField="Tally[1]" /> 
    </telerik:GridViewDataColumn.AggregateFunctions> 
    </telerik:GridViewDataColumn> 

    <telerik:GridViewDataColumn Header="Column3" DataMemberBinding="{Binding Path=Tally[2], Mode=TwoWay}"> 
    <telerik:GridViewDataColumn.AggregateFunctions> 
     <telerik:SumFunction ResultFormatString="{}{0:N2}" SourceField="Tally[2]" /> 
    </telerik:GridViewDataColumn.AggregateFunctions> 
    </telerik:GridViewDataColumn> 
</telerik:RadGridView> 

のViewModel

public class MyViewModel : ViewModel 
{ 
    private ObservableCollection<Item> items = Item.GetAll(); 
    public ObservableCollection<Item> Items 
    { 
    get { return items; } 
    set { 
     items = value; 
     NotifyPropertyChanged("Items"); 
    } 
    } 
} 

public class Item : ViewModel 
{ 
    private List<int> tally = new List<int>(); 
    public List<int> Tally 
    { 
    get { return tally; } 
    set 
    { 
     tally = value; 
     NotifyPropertyChanged("Tally"); 
    } 
    } 

    public Item() 
    { 
    for (int i = 0; i < 10; i++) 
     this.Tally.Add(i); 
    } 

    public static ObservableCollection<Item> GetAll() 
    { 
    ObservableCollection<Item> items = new ObservableCollection<Item>(); 
    for (int i = 0; i < 10; i++) 
     items.Add(new Item(i)); 
    return items; 
    } 
} 

はなぜ総和が更新されていませんか?

答えて

0

どのようにして

public class Item : ViewModel 
    { 
     private int tally ; 
     public int Tally 
     { 
       get { return tally; } 
       set 
       { 
        tally = value; 
        NotifyPropertyChanged("Tally"); 
     } 
    } 

<telerik:GridViewDataColumn Header="Column1" DataMemberBinding="{Binding Path=Tally, Mode=TwoWay}"> 
    <telerik:GridViewDataColumn.AggregateFunctions> 
     <telerik:SumFunction ResultFormatString="{}{0:N2}" SourceField="Tally" /> 
    </telerik:GridViewDataColumn.AggregateFunctions> 
</telerik:GridViewDataColumn> 
にItemクラスのTalltプロパティを変更した場合
関連する問題