Quelle est la meilleure façon de répliquer la fonctionnalité d'une interface utilisateur du dossier Explorateur Windows dans WPF?
-
20-09-2019 - |
Question
J'utilise FileSystemWatcher
pour remplir et mettre à jour une liste de lecture. Je veux reproduire de nombreuses fonctionnalités de Windows Explorer, le plus important:
* Renommer en ligne
* Double clic lent à renommer
Je vais avoir tout à fait embêtant de faire cela, donc je pensais que, peut-être il y a un moyen plus facile que réimplémentant la roue? Peut-être que je peux en quelque sorte l'hôte d'une fenêtre de l'Explorateur Windows dans mon application comme un contrôle?
La solution
Hébergement une véritable fenêtre de l'Explorateur Windows dans votre application est possible mais semée d'embûches: Les techniques sont différentes dans XP vs Vista vs Win7 et vous aurez affaire à toutes sortes de choses de bas niveau. Je recommande fortement contre l'essayer.
Je pense que vos meilleures options sont:
- Utilisez Microsoft.Win32.OpenFileDialog si elle peut être facilement adapté à vos besoins, ou
- Code de votre propre fonctionnalité, ou si vous êtes très courageux:
- Lancer une nouvelle fenêtre Explorer, le cas échéant avec le code qui tente de forcer sa position et la taille à plus de votre application (cela aussi est difficile ...)
Notes sur ligne renommer fonction
La ligne renomme et lent double-cliquez pour renommer les caractéristiques sont vraiment trivial à mettre en œuvre.
Dans votre modèle de vue ajouter:
- A "NewName" string DependencyProperty
- Un "Changement de nom" bool DependencyProperty avec un PropertyChangedCallback. Quand « Renommage » va vrai, nom de la copie à NouveauNom. Quand il devient faux, si NouveauNom! = Nom renommez le fichier de mise à jour d'un nom.
Dans votre DataTemplate ajouter un déclencheur sur « Renommer » qui remplace votre TextBlock lié à « Nom » avec une zone de texte lié à « NewName ».
Ajoutez ces gestionnaires d'événements: * Événement KeyDown: Si F2 est pressé bascule renomme. Si on appuie sur Entrée et changement de nom, réglez = false Renommage. Si vous appuyez sur Echap et Renommage copie Nom de NouveauNom et définissez = false Renommage. * Événement LostFocus: Set = false Renommage * Événement SelectionChanged sur le contenant: horodatage Enregistrement du dernier changement de sélection. * Événement MouseDown: Si vous cliquez à gauche et la sélection a changé> il y a 0,5 secondes, réglez = true Renommage
Beaucoup d'autres caractéristiques de vue Explorateur sont tout aussi faciles à mettre en œuvre, tels que le regroupement et plusieurs colonnes.
Hope this helps.