¿Cuál es la mejor manera de replicar la funcionalidad de una interfaz de usuario carpeta del Explorador de Windows en WPF?

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

Pregunta

Así que estoy usando FileSystemWatcher para rellenar y actualizar una lista de reproducción. Quiero replicar muchas características de Windows Explorer, lo más importante:
* Línea renombrar
* Lenta doble clic para cambiar el nombre

Estoy teniendo bastante complicado hacer esto, así que pensé, tal vez hay una manera más fácil que reimplementar la rueda? Tal vez yo puedo de alguna manera el anfitrión de una ventana de Windows Explorer en mi solicitud como control?

¿Fue útil?

Solución

Organizar una verdadera ventana de Windows Explorer en su aplicación es posible, pero lleno de peligros: Las técnicas son diferentes en XP vs vs Vista Win7 y se le trata con todo tipo de cosas de bajo nivel. Yo recomendaría fuertemente contra intentarlo.

Creo que las mejores opciones son:

  1. Uso Microsoft.Win32.OpenFileDialog si puede ser fácilmente adaptado a sus necesidades, o
  2. Código de su propia funcionalidad, o si usted es muy valiente:
  3. Poner en marcha una ventana del explorador separada, opcionalmente con código que trata de forzar su posición y tamaño para ser por encima de su aplicación (esto también es difícil ...)

Notas sobre la línea característica de cambiar el nombre

La línea cambiar el nombre y lento doble clic para cambiar el nombre de características son realmente muy trivial de implementar.

En su vista del modelo complemento:

  • A "NuevoNombre" cadena DependencyProperty
  • A "Cambiar el nombre de" DependencyProperty bool con un PropertyChangedCallback. Cuando "Cambio de nombre" se hace verdadero, copiar Nombre de NuevoNombre. Cuando se hace falso, si NuevoNombre! = Nombre renombrar el archivo un nombre de actualización.

En su DataTemplate añadir un disparador en "Cambiar el nombre de" que sustituye a su TextBlock con destino a "Nombre" con un cuadro de texto con destino a "NuevoNombre".

Añadir estos controladores de eventos: * Evento KeyDown: Si se pulsa F2 Cambiar el nombre de palanca. Si se pulsa ENTER y cambio de nombre, cambio de nombre de set = false. Si se pulsa Esc y cambio de nombre de copiar el nombre de NuevoNombre y establecer el cambio de nombre = false. * Evento LostFocus: Conjunto cambio de nombre = false * Evento SelectionChanged en el envase: fecha y hora de grabación del último cambio de selección. * Evento MouseDown: Si se deja clic y selección cambiaron> Hace 0,5 segundos, establecido el cambio de nombre = true

Muchas otras características de la vista del explorador son igualmente fáciles de implementar, como agrupación y varias columnas.

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top