Quelle est la meilleure façon de répliquer la fonctionnalité d'une interface utilisateur du dossier Explorateur Windows dans WPF?

StackOverflow https://stackoverflow.com/questions/2246823

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?

Était-ce utile?

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:

  1. Utilisez Microsoft.Win32.OpenFileDialog si elle peut être facilement adapté à vos besoins, ou
  2. Code de votre propre fonctionnalité, ou si vous êtes très courageux:
  3. 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top