0

我正在尝试在文本块中获取要更新的总和,但是我只能通过重新启动 Windows Phone 模拟器来更新它。为什么会这样?

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();                  

    }
4

1 回答 1

-1

尝试设置UpdateSourceTriggerPropertyChangedTextBlock的绑定:

<TextBlock x:Name="lbTotalAmt" Text="{Binding Path=Sum, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Margin="0,364,0,10" Grid.Row="1" />

Explicit不执行自动更新。MSDN 说:

仅当您调用 UpdateSource 方法时更新绑定源。

有关详细信息,请参阅有关 UpdateSourceTrigger的 MSDN。

于 2013-03-18T14:00:20.377 回答