2016-08-03 3 views
1

Je suis nouveau sur WPF. J'ai lié les propriétés de la classe source aux contrôles cibles avec succès. Mais chaque fois que la valeur des propriétés change, les contrôles de l'interface utilisateur ne reflètent pas les données mises à jour. S'il vous plaît aiderLiaison non mise à jour à partir de la classe INotifyPropertyChanged

code WPF:

<Label Name="Panel_ch1Mode" Content="{Binding Path=Mode, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" FontFamily="Roboto Regular" FontSize="16" Foreground="#FFFFFF"/> 

Ma Classe:

public class ClassName: INotifyPropertyChanged 
{ 
//Auto Refresh 
     private string mode; 
     public string Mode 
     { 
      get 
      { 
       return this.mode; 
      } 
      set 
      { 
       this.mode = value; 
       NotifyPropertyChanged("Mode"); 
      } 
     } 

    public event PropertyChangedEventHandler PropertyChanged; 

     public void NotifyPropertyChanged(string propertyName) 
     { 
      if (PropertyChanged != null) 
       PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 


     } 
} 
+0

Comment savez-vous que vous vous êtes lié avec succès? – Jai

+0

avez-vous défini DataContext? – Mikolaytis

+0

Je voudrais vérifier une fenêtre de sortie et de rechercher l'erreur 40 :, peut-être votre datacontext n'a pas été créé? ou c'est dans une mauvaise portée? – adminSoftDK

Répondre

0

Essayez ceci: Il suffit de supprimer de la XAML UpdateSourceTrigger = PropertyChanged, mode = TwoWay.)

Améliorer votre implémentation de INotifyPropertyChanged linke ceci:

private void NotifyPropertyChanged([CallerMemberName] string propertyName = null) 
{ 
    var handler = PropertyChanged; 
    if (handler != null) 
     handler(this, new PropertyChangedEventArgs(propertyName)); 
} 
+0

Bien que cela soit valide (parce que 'UpdateSourceTrigger = PropertyChanged' et' Mode = TwoWay' n'ont pas d'effet ici) et 'CallerMemberName' peut être considéré comme une amélioration, ne fournit pas de réponse à la question. – Clemens

-1

Dans le code derrière s'il vous plaît vérifier si le ViewModel est "branché" à la vue:

public YourView() 
    { 
      InitializeComponent(); 
      DataContext = new ClassName(); 
    } 

Vous devez garder à l'esprit que une liaison est toujours liée à DataContext.

+0

DataContext a déjà défini avec Object nom de la classe –

+0

Nice downvote, je ne comprends pas pourquoi, parce que ce pourrait être une solution pour les autres, mais ... ok ... –