ما هي أفضل طريقة لتكرار وظيفة واجهة مستخدم مجلد Windows Explorer في WPF؟

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

سؤال

لذلك أنا أستخدم FileSystemWatcher لملء وتحديث قائمة التشغيل.أريد تكرار العديد من ميزات Windows Explorer، وأهمها:
* إعادة تسمية مضمنة
* انقر نقرًا مزدوجًا بطيئًا لإعادة التسمية

أواجه صعوبة كبيرة في القيام بذلك، لذا فكرت، ربما هناك طريقة أسهل من إعادة استخدام العجلة؟ربما يمكنني بطريقة ما استضافة نافذة Windows Explorer في تطبيقي كعنصر تحكم؟

هل كانت مفيدة؟

المحلول

من الممكن استضافة نافذة Windows Explorer حقيقية في تطبيقك ولكنها محفوفة بالمخاطر:تختلف التقنيات بين XP وVista وWin7 وسوف تتعامل مع جميع أنواع الأشياء ذات المستوى المنخفض.سأوصي بشدة بعدم تجربته.

أعتقد أن أفضل الخيارات المتاحة أمامك هي:

  1. استخدم Microsoft.Win32.OpenFileDialog إذا كان من الممكن تكييفه بسهولة حسب احتياجاتك، أو
  2. قم ببرمجة وظائفك الخاصة، أو إذا كنت شجاعًا جدًا:
  3. قم بتشغيل نافذة Explorer منفصلة، ​​اختياريًا باستخدام رمز يحاول فرض موضعه وحجمه على التطبيق الخاص بك (وهذا أيضًا صعب...)

ملاحظات حول ميزة إعادة التسمية المضمنة

تعد عملية إعادة التسمية المضمنة والنقر المزدوج البطيء لإعادة تسمية الميزات أمرًا تافهًا جدًا في التنفيذ.

في نموذج العرض الخاص بك أضف:

  • سلسلة "NewName" DependencyProperty
  • "إعادة تسمية" Bool DependencyProperty باستخدام خاصية PropertyChangedCallback.عندما تصبح "إعادة التسمية" صحيحة، انسخ الاسم إلى NewName.عندما يصبح خطأ، إذا كان NewName!=Name قم بإعادة تسمية الملف إلى اسم التحديث.

في DataTemplate الخاص بك، قم بإضافة مشغل على "إعادة التسمية" الذي يستبدل TextBlock المرتبط بـ "Name" بـ TextBox المرتبط بـ "NewName".

أضف معالجات الأحداث هذه:* حدث KeyDown:إذا تم الضغط على F2، قم بتبديل إعادة التسمية.إذا تم الضغط على زر الإدخال وإعادة التسمية، فاضبط إعادة التسمية = خطأ.إذا تم الضغط على Esc وإعادة تسمية الاسم إلى NewName وتعيين إعادة التسمية = خطأ.* حدث LostFocus:Set Renaming = False * SelectionChanged Event على الحاوية:سجل الطابع الزمني لآخر تغيير في التحديد.* حدث MouseDown:إذا تم النقر بزر الماوس الأيسر وتغير التحديد > قبل 0.5 ثانية، فاضبط إعادة التسمية = صحيح

من السهل أيضًا تنفيذ العديد من الميزات الأخرى في طريقة عرض Explorer، مثل التجميع والأعمدة المتعددة.

أتمنى أن يساعدك هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top