La liaison de données pour SelectedItem dans un WPF Treeview

Comment puis-je récupérer l'élément sélectionné dans WPF treeview? Je veux le faire en XAML, parce que je veux le lier.

Vous pourriez penser qu'il est SelectedItem mais apparemment ce n'existe pas est en lecture seule et donc inutilisable.

C'est ce que je veux faire:

<TreeView ItemsSource="{Binding Path=Model.Clusters}" 
            ItemTemplate="{StaticResource ClusterTemplate}"
            SelectedItem="{Binding Path=Model.SelectedCluster}" />

Je veux lier la SelectedItem à une propriété sur mon Modèle.

Mais cela me donne l'erreur:

'SelectedItem" la propriété est en lecture seule et ne peut pas être définie à partir de la majoration.

Edit:
Ok, c'est le moyen que j'ai résolu ce problème:

<TreeView
          ItemsSource="{Binding Path=Model.Clusters}" 
          ItemTemplate="{StaticResource HoofdCLusterTemplate}"
          SelectedItemChanged="TreeView_OnSelectedItemChanged" />

et dans le codebehindfile de mon xaml:

private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
    Model.SelectedCluster = (Cluster)e.NewValue;
}
  • L'homme, cet suce. Il vient de frapper moi aussi. Je suis venu ici en espérant trouver qu'il ya une bonne façon et je suis juste un idiot. C'est la première fois que je suis triste de constater que je ne suis pas un idiot..
  • cette suce vraiment et gâcher la liaison concept
  • Espérons que cela pourrait aider quelqu'un à se lier à un arbre afficher l'élément sélectionné changé de retour d'appel sur Icommand jacobaloysious.wordpress.com/2012/02/19/...
  • En termes de liaison et de MVVM, le code n'est pas "interdit", plutôt de code derrière devrait soutenir la vue. À mon avis, de toutes les autres solutions que j'ai vu, le code derrière est bien meilleure option, car elle est toujours aux prises avec la "liaison" de la vue vers le viewmodel. Le seul point négatif est que si vous avez une team avec un concepteur de travailler uniquement dans le code XAML, le code derrière pourrait obtenir cassée ou négligées. C'est un petit prix à payer pour une solution qui prend 10 secondes à mettre en œuvre.
  • L'une des solutions les plus simples sans doute: stackoverflow.com/questions/1238304/...
InformationsquelleAutor Natrium | 2009-06-16