2013-01-18 3 views
2

J'ai une simple Datagrid liée à une ObservableCollection à partir du ViewModel. Cette ObservableCollection est composée d'un type personnalisé, par exemple ObservableCollection.Propriété de type complexe de liaison de données WPF retour

Le ComplexType n'a que 2 propriétés et une seule est éditable à l'écran. L'autre est un type booléen qui dépend du premier.

Lorsque je modifie la première propriété , il est reflété dans ComplexType et il modifie également la deuxième propriété. Mais la deuxième propriété n'est pas modifiée à l'écran. Comment puis-je mettre à jour la deuxième propriété sur l'écran?

+0

Utilisez-vous DataBinding dans les deux sens dans votre XAML à la seconde propriété? Augmentez-vous l'événement PropertyChanged lorsque vous modifiez la première propriété? Ce sera bien de voir votre code. – acrilige

+0

Vous devriez publier du code pour connaître votre liaison et vos propriétés –

Répondre

3

Essayez ceci:

public class ComplexType:INotifyPropertyChanged 
{ 
    private object someProperty1; 
    public object SomeProperty1 
    { 
     get{return someProperty1;} 
     set 
     { 
      someProperty1=value; 
      SomeProperty2=somefunc(someProperty1); 

      If(PropertyChanged!=null){PropertyChanged(this, new PropertyChangedEventArgs(SomeProperty1));} 
     } 
    } 

    private object someProperty2; 
    public object SomeProperty2 
    { 
     get{return someProperty2;} 
     set 
     {  
     someProperty2=value; 

     If(PropertyChanged!=null){PropertyChanged(this, new PropertyChangedEventArgs(SomeProperty2));} 
     } 

    public event PropertyChangedEventHandler PropertyChanged; 
} 
2

Une collection observable fournit une notification uniquement lorsque des éléments sont ajoutés, supprimés ou que toute la collection est actualisée. Vous devez vous assurer que chaque propriété déclenche l'événement PropertyChanged ou est une propriété de dépendance si vous souhaitez que votre interface utilisateur s'actualise lorsqu'elle est modifiée.

Questions connexes