Bagikan melalui


Antarmuka pengguna kustom (kontrol sumber VSPackage)

VSPackage mendeklarasikan item menu dan status defaultnya melalui file tabel perintah Visual Studio (.vsct). Lingkungan pengembangan terintegrasi Visual Studio (IDE) menampilkan item menu dalam status defaultnya hingga VSPackage dimuat. Selanjutnya, metode dipanggil QueryStatus untuk mengaktifkan atau menonaktifkan item menu.

VSPackage dapat mengatur kunci registri sehingga VSPackage dapat dimuat secara otomatis tergantung pada konteks antarmuka pengguna perintah (UI), meskipun biasanya kontrol sumber VSPackage harus dimuat sesuai permintaan alih-alih hanya beralih ke konteks UI tertentu. Untuk informasi selengkapnya tentang kunci registri AutoLoadPackages , lihat Mengelola VSPackages.

VSPackage Antarmuka Pengguna

Paket kontrol sumber diimplementasikan sebagai VSPackage dan tidak menggunakan UI apa pun dari Visual Studio. Setiap kontrol sumber VSPackage harus menentukan elemen UI-nya sendiri seperti item menu, grup menu, jendela alat, toolbar, dan UI yang diperlukan untuk mengatur opsi khusus untuk kontrol sumber VSPackage. Elemen UI ini dapat diaktifkan secara statis atau dinamis. Elemen UI statis didefinisikan dalam file .vsct dan ditampilkan apakah VSPackage dimuat atau tidak. Elemen UI dinamis mungkin terlihat tergantung pada konteks UI perintah tertentu, seperti vsContextNoSolution, atau sebagai hasil dari panggilan ke QueryStatus metode . Visibilitas elemen UI dinamis mematuhi strategi untuk pemuatan VSPackages yang tertunda.

Batasan UI pada kontrol sumber VSPackages

Karena kontrol sumber VSPackage tidak dapat dihapus dari IDE setelah dimuat, VSPackage harus dapat memasukkan status tidak aktif. Ketika VSPackage menerima pemberitahuan bahwa VSPackage tidak lagi aktif, VSPackage menonaktifkan UI-nya dan mengabaikan interaksi IDE eksternal apa pun. Implementasi QueryStatus metode VSPackage harus menyembunyikan perintah ketika VSPackage tidak aktif.

Setiap kontrol sumber VSPackage harus mengimplementasikan IVsSccProvider antarmuka. Dua metode pada antarmuka, SetActive dan SetInactive, harus diimplementasikan oleh VSPackage.

Kontrol sumber VSPackage mungkin telah berlangganan berbagai peristiwa IDE, yang diimplementasikan oleh IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2, dan sebagainya. Selain itu, VSPackage mungkin telah menerapkan antarmuka panggilan balik yang diaktifkan melalui registri, seperti IVsSolutionPersistence. Semua antarmuka ini harus diabaikan ketika tidak aktif.

Daftar berikut menunjukkan antarmuka yang terpengaruh oleh status aktif kontrol sumber VSPackage:

  • Lacak peristiwa pada dokumen proyek.

  • Peristiwa solusi.

  • Antarmuka penyimpanan solusi. Ketika tidak aktif, paket tidak boleh menulis ke file .sln dan .suo .

  • Ekstender properti.

    Antarmuka opsional yang diperlukan IVsQueryEditQuerySave2 dan IVsSccManager2, dan juga yang terkait dengan kontrol sumber, tidak dipanggil ketika kontrol sumber VSPackage tidak aktif.

    Saat IDE Visual Studio dimulai, Visual Studio mengatur konteks UI perintah ke ID kontrol sumber default SAAT ini VSPackage ID. Hal ini menyebabkan UI statis kontrol sumber aktif VSPackage muncul di IDE tanpa benar-benar memuat VSPackage. Visual Studio menjeda VSPackage untuk mendaftar dengan Visual Studio melalui IVsRegisterScciProvider sebelum melakukan panggilan apa pun ke VSPackage.

    Tabel berikut ini menjelaskan detail spesifik tentang bagaimana Visual Studio IDE menyembunyikan item UI yang berbeda.

Item UI Description
Menu dan bilah alat Paket kontrol sumber harus mengatur status visibilitas menu dan toolbar awal ke ID paket kontrol sumber di bagian VisibilityConstraints dari file .vsct . Ini memungkinkan IDE Visual Studio untuk mengatur status item menu dengan tepat tanpa memuat VSPackage dan memanggil implementasi metode QueryStatus.
Jendela peralatan Kontrol sumber VSPackage menyembunyikan jendela alat apa pun yang dimilikinya ketika dibuat tidak aktif.
Halaman opsi khusus VSPackage kontrol sumber Kunci registri HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts memungkinkan VSPackage mengatur konteks yang mengharuskan halaman opsinya ditampilkan. Entri registri di bawah kunci ini harus dibuat dengan menggunakan ID layanan (SID) layanan kontrol sumber dan menetapkannya nilai DWORD 1. Setiap kali peristiwa UI terjadi dalam konteks kontrol sumber VSPackage terdaftar, VSPackage akan dipanggil jika aktif.