テキストブロックで合計を更新しようとしていますが、WindowsPhoneエミュレーターを再起動することによってのみ更新できます。なんでそうなの?
DisplayBill.xamlのコード
<TextBlock x:Name="lbTotalAmt" Text="{Binding Path=Sum, Mode=TwoWay, UpdateSourceTrigger=Explicit}" Margin="0,364,0,10" Grid.Row="1" />
ViewModel.csのコード
private string _Sum;
public string Sum
{
get {return _Sum;}
set
{
_Sum = value;
NotifyPropertyChanged("Sum");
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
// Used to notify Silverlight that a property has changed.
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
if (propertyName == "ToDoBills")
UpdateSumValue();
}
private void UpdateSumValue()
{
Sum = ToDoBills.Sum(i => i.Amount).ToString();
}
#endregion
更新
私がやろうとしているのは、リストボックスがアイテムを追加するたびにテキストブロックを更新することです。したがって、新しいアイテムがリストボックスに追加されるたびに、合計金額を表示するテキストブロックが更新されます。だから私の質問は、新しいアイテムがリストボックスに追加されるたびにテキストブロックを更新するにはどうすればよいですか?誰か助けてくれませんか?以下のバインディング式を使用してみましたが、役に立ちませんでした
public DetailPageBill()
{
InitializeComponent();
// Set the page DataContext property to the ViewModel.
this.DataContext = App.todoViewModel;
BindingExpression be = lbTotalAmt.GetBindingExpression(TextBlock.TextProperty);
be.UpdateSource();
}