2013-03-18 3 views
0

J'essaie d'obtenir la mise à jour de la somme dans le bloc de texte, mais je ne peux que la mettre à jour en redémarrant l'émulateur de Windows Phone. Pourquoi est-ce vrai?La liaison de données à textblock ne se met pas à jour

code dans DisplayBill.xaml

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

code dans 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 

Mise à jour
Ce que je suis en train de faire est de mettre à jour le textblock chaque fois que le listbox ajoute une article. donc chaque fois qu'un nouvel élément est ajouté dans la listbox, le bloc de texte qui affiche le montant total sera mis à jour. Donc, ma question est comment puis-je mettre à jour mon bloc de texte chaque fois qu'un nouvel élément est ajouté dans la liste? Quelqu'un peut-il m'aider s'il-vous-plaît? J'ai essayé d'utiliser l'expression de liaison ci-dessous, mais sans résultat

public DetailPageBill() 
    { 
     InitializeComponent(); 

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

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

    } 
+0

pouvez-vous partager une repro complète? –

+0

Qu'est-ce qu'un repro complet? – Keenlearner

+0

@Keenlearner La valeur "Somme" est-elle modifiée lors du débogage? – asitis

Répondre

-1

Essayez de régler UpdateSourceTrigger à PropertyChanged pour vos s » TextBlock reliure:

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

Avec Explicit aucune mise à jour automatique est effectuée. MSDN dit:

met à jour la source de liaison uniquement lorsque vous appelez la méthode UpdateSource .

Voir MSDN on UpdateSourceTrigger pour plus d'informations.

+0

Étrange il n'y a pas d'intellisense affiché pour PropertyChanged – Keenlearner

+0

Il est dit que la valeur de PropertyChanged était pas trouvé quand j'ai essayé de changer le UpdateSourceTrigger. – Keenlearner

+0

@Keenlearner Désolé, il se peut que ce ne soit pas disponible sur Windows Phone. Fonctionne-t-il avec 'Default' à la place? Éditera ma réponse si elle le fait ... –

Questions connexes