2015-07-31 1 views
2

J'ai le TreeView avec des objets. Lorsque je sélectionne l'élément de ces arbres, que d'autres contrôles - ListView affiche comme propriétés de ses objets de l'objet sélectionné. Je veux enregistrer les valeurs des propriétés lorsque dans la sélection TreeView est la modification à l'autre objet. Alors, y at-il un bon moyen dans WPF pour obtenir des valeurs de "juste avant de changer" les éléments dans le contrôle ListView? Mon idée pour l'instant est de remplacer le PreviewMouseDown pour vérifier si l'utilisateur clique sur le nœud de l'arbre. Par Dieu, je veux dire mieux que le mien. Peut-être quelque chose dans le modèle ListView? Indication qu'il n'y a pas besoin de changer mon idée avec PreviewMouseDown sera aussi une bonne réponse.WPF obtient "ancienne" valeur lorsque les données dans ListView changent

Répondre

0

Pourriez-vous s'il vous plaît fournir les extraits de code pertinents? J'essaie de répondre à votre question, mais je ne suis pas sûr d'avoir bien compris. Si vous liez l'élément SelectedItem de TreeView à une propriété (c'est-à-dire en utilisant le modèle MVVM), vous pouvez enregistrer les valeurs avant de définir réellement l'élément.

Faire cela dans le setter n'est pas si bon, car il devient assez grand alors. J'aurais un setter comme celui-ci:

private Foo bar; 
public Foo Bar 
{ 
    get { return bar; } 
    set 
    { 
     OnPropertyChanging("Bar"); 
     bar=value; 
     OnPropertyChanged("Bar"); 
    } 
} 

Ensuite, vous pouvez écouter vos propres événements PropertyChanging et faire vos choses là-bas:

private void this_PropertyChanging(object param, PropertyChangingEventArgs e) 
{ 
    switch(e.PropertyName) 
    { 
     case "Bar": 
      //Do you stuff 
     break, 
    } 
} 
+0

@ Martin, je cherchais la solution de mon problème qui utilisent plus mécanismes WPF correspondants que la capture de clic de souris. Maintenant j'en ai un, ce qui est génial. Merci! Je vais attendre un peu pour d'autres suggestions. –

+0

Peut-être que les événements SelectedItemChanged ou SelectedNodeChanged de TreeViewItem peuvent également vous aider. –