y a-t-il un bon moyen (sauf retablissant l'ensemble de l'ensemble Je suis essentiellement à la recherche du style arbresviewem.template code>) pour désactiver la sélection dans
arbiew code>? P>
itemsControl code> du
TreeView code> (un
itemsControl code> est la meilleure utilisation pour "désactiver" la sélection sur
Listbox Code>, lisez Ceci Post) P>
8 Réponses :
J'ai décidé d'écrire un comportement réutilisable, HTH:
<Window xmlns:components="clr-namespace:WpfApplication.Components"> <TreeView> <TreeView.ItemContainerStyle> <Style TargetType="TreeViewItem"> <Setter Property="components:TreeViewBehavior.IsTransparent" Value="True" /> </Style> </TreeView.ItemContainerStyle> </TreeView> </Window>
Chaque fois qu'un élément est sélectionné, vous pourriez "désélectionner". Ex. Modifiez le code de http://www.codeproject.com/kb/wpf/treeview_selectionwpf.aspx ou utilisez une approche MVVM (voir http://www.codeproject.com/ KB / WPF / TreeViewWithViewModel.aspx ) et toujours défini sur False. P>
Bien que cela puisse théoriquement répondre à la question, nous aimerions que vous incluiez les parties essentielles de l'article lié dans votre réponse et fournissez le lien Référence . Omettre de faire cela laisse la réponse en danger de la pourriture de liens.
Je l'ai fait une différence que la réponse acceptée:
permet de dire que vous avez une propriété dans votre viewModel (dites «Dites». Maintenant, lorsquePReventsElection est vrai, vous voulez que la sélection soit désactivée: p>
dans votre arbreview incendie L'événement sélectionné comme suit: p> puis dans le codeBeHind Vous pouvez Ce qui suit: p>
Il ne semble pas y avoir d'événement code> aperçu code> sur le WPF TreeView code>.
HMM J'utilisais Telerik's Radtreeview et je suppose que j'ai supposé que l'événement Aperviewselecté était disponible dans un arbre régulier.
Basé sur les liens vers la réponse actuellement acceptée, j'ai mis en place ceci dans mon projet:
protected bool _DisableSelection; private bool _IsSelected; public bool IsSelected { get { return _IsSelected; } set { if (value == _IsSelected) return; _IsSelected = _DisableSelection ? false : value; NotifyPropertyChanged(); } }
Essayez ceci:
<Trigger Property="HasItems" Value="true"> <Setter Property="Focusable" Value="false" /> </Trigger>
Pour étendre cette réponse, le réglage de la falsification sur False On Leaf TreeViewSItems semble également empêcher d'être sélectionné.
Cela empêche également les nœuds sans que les enfants soient sélectionnés, considérez cela.
Malheureusement, lors de l'effondrement d'un nœud, cela peut toujours entraîner la sélection de la racine
Je viens de désélectionner les visualisations des arbres tels qu'ils sont sélectionnés. J'utilise arboresview une seule fois. Cependant, si je l'ai ajouté à plusieurs endroits, j'envisagerais de regarder cela à l'ajouter à un comportement attaché.
xaml: p> code derrière: p> private void TreeView_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!(sender is TreeView myTreeView)) return;
var selectedItem = (TreeViewItem)myTreeView.SelectedItem;
if (selectedItem == null) return;
selectedItem.IsSelected = false;
}
Ceci a fait le tour pour moi (basé sur Cette Réponse, mais aucune naissance à l'élément - la sélection est désactivée. :
<TreeView> <TreeView.ItemContainerStyle> <Style TargetType="TreeViewItem"> <Setter Property="Focusable" Value="False" /> </Style> </TreeView.ItemContainerStyle> </TreeView>
J'ai essayé cela et ça a fonctionné pour moi. Parce que j'ai une taxe simple et non dynamique. Mais je pense que cela peut fonctionner en le mettant dans un style
Tandis que cet extrait de code peut être la solution, y compris un L'explication aide vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, et ces personnes pourraient ne pas connaître les raisons de votre suggestion de code.
Merci @neoanderson. Je suis nouveau ici, mais je veux juste aider.
Nous voulons tous aider. L'objectif est de le faire aussi efficace que possible. Merci d'avoir expliqué l'extrait de code.
Voici une autre approche: Stackoverflow.com/Questtions/1398559/...