Qual è il modo migliore per replicare la funzionalità di un utente cartella di Windows Explorer in WPF?

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

Domanda

Così sto usando FileSystemWatcher per popolare e aggiornare un elenco di riproduzione. Voglio replicare molte caratteristiche di Windows Explorer, cosa più importante:
* Linea rinominare
* Lento doppio click per rinominare

Sto avendo piuttosto una seccatura fare questo, così ho pensato, forse c'è un modo più semplice di quanto reimplementare la ruota? Forse posso in qualche modo ospitare una finestra di Esplora risorse nella mia applicazione come controllo?

È stato utile?

Soluzione

Hosting di un vero e proprio finestra di Esplora risorse nella vostra applicazione è possibile, ma pieno di pericoli: Le tecniche sono diverse in XP vs Vista vs Win7 e avrete a che fare con tutti i tipi di roba di basso livello. Raccomando caldamente contro provarlo.

Credo che i vostri migliori opzioni sono:

  1. Usa Microsoft.Win32.OpenFileDialog se può essere facilmente adattato al vostro bisogno, o
  2. Codice le proprie funzionalità, o se siete molto coraggioso:
  3. Avviare una finestra di Explorer separata, opzionalmente con il codice che cerca di forzare la sua posizione e le dimensioni di essere sopra la vostra applicazione (anche questo è difficile ...)

caratteristica Note sulla linea rinominare

La linea rinominare e lento fare doppio clic per rinominare caratteristiche sono davvero molto banali da implementare.

Secondo voi modello di aggiungere:

  • A "NewName" stringa DependencyProperty
  • A "Rinominare" bool DependencyProperty con un PropertyChangedCallback. Quando "Rinominare" diventa vero, copiare nome a NewName. Quando va falso, se NuovoNome! = Nome rinominare il file di un nome di aggiornamento.

Nel vostro DataTemplate aggiungere un trigger su "Rinomina" che sostituisce il tuo TextBlock legato a "Nome" con una TextBox legata a "NewName".

Aggiungi questi gestori di eventi: * Evento KeyDown: Se viene premuto F2 ginocchiera Renaming. Se si preme Invio e rinominare, impostare rinomina = false. Se si preme Esc e rinominare Copia nome di NewName e impostare rinomina = false. * Evento LostFocus: Set ridenominazione = false * Evento SelectionChanged sul contenitore: record timestamp dell'ultima modifica selezione. * Evento MouseDown: Se scatto a sinistra e selezione cambiati> 0,5 secondi fa, impostare rinomina = true

Molte altre caratteristiche di vista Explorer sono altrettanto facili da implementare, come raggruppamento e più colonne.

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top