2013-03-18 3 views
0

Я пытаюсь получить сумму для обновления в текстовом блоке, однако я могу только обновить ее, перезапустив эмулятор телефона Windows. Почему это так?Связывание данных с текстовым блоком не обновляется

Код в 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 

Update
То, что я пытаюсь сделать, это обновить TextBlock каждый раз, когда в окне списка добавляет пункт. поэтому каждый раз, когда в список добавляется новый элемент, будет обновляться текстовый блок, отображающий общую сумму. Итак, мой вопрос: как я могу обновлять свой текстовый блок каждый раз, когда новый элемент добавляется в список? Кто-нибудь может мне помочь? Я попытался с помощью выражения привязки ниже, но безрезультатно

public DetailPageBill() 
    { 
     InitializeComponent(); 

     // Set the page DataContext property to the ViewModel. 
     this.DataContext = App.todoViewModel; 

       BindingExpression be = lbTotalAmt.GetBindingExpression(TextBlock.TextProperty); 
       be.UpdateSource();     

    } 
+0

Вы можете поделиться полным воспроизведением? –

+0

Что такое полное воспроизведение? – Keenlearner

+0

@ Keenlearner Получаете ли вы значение «Sum» при отладке? – asitis

ответ

-1

Попробуйте установить UpdateSourceTrigger в PropertyChanged для ваших TextBlock «ы связывания:

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

С Explicit без автоматического обновления выполняется. MSDN говорит:

Обновляет источник привязки только при вызове метода UpdateSource .

Для получения дополнительной информации см. MSDN on UpdateSourceTrigger.

+0

Странный нет intellisense, показанный для PropertyChanged – Keenlearner

+0

Он говорит, что значение PropertyChanged было не найден, когда я попытался изменить UpdateSourceTrigger. – Keenlearner

+0

@Keenlearner Извините, он может быть недоступен на Windows Phone. Работает ли он вместо 'Default'? Изменит мой ответ, если это произойдет ... –

Смежные вопросы